演算法設計學習 棧演算法

2021-06-23 01:14:04 字數 982 閱讀 8762

(1)題目:c語言中算術表示式中的括號只有小括號。編寫演算法,判斷表示式中的括號是否正確匹配,表示式已經存在字元陣列exp中(元素從陣列小標1開始儲存),字元個數為n。

分析:即在解決問題的過程中,出現了乙個狀態,但是憑現有條件不能判斷當前的狀態是否可以解決,需要記下,等待以後出現可以解決當前狀態的條件後返回來再解決。使用來解決,棧具有記憶功能,這是棧filo的延伸。

**:

int match(char exp, int n)

if (')' == exp[i])

else

}} if ( -1 == top ) //棧空,說明括號是匹配的

else //否則括號不匹配

}

(2)題目:用不帶頭結點的單鏈表儲存鏈棧,設計初始化、判斷空棧,進棧和出棧等演算法

分析:不帶頭結點的單鏈表lst為空的條件為 lst == null,進出棧都是在表頭進行的。

//初始化鏈棧

void initstackl(lnode *&lst)

//判斷棧空

int isemptyl(lnode *lst)

else }

//進棧

void pushl(lnode *&lst, int x)

//出棧

int pop(lnode *&lst, int &x) //需要改變的變數要用引用型

//刪除結點操作

p = lst; //p指向第乙個資料結點

x = p->data;

lst = p->next;

free(p);

return 1;

}

演算法設計學習 單鏈表演算法

1 題目 單鏈表a 和 b 帶表頭結點 元素遞增有序。設計演算法將a 和 b歸併成乙個按照元素值依然遞增有序的鍊錶c,c由a和b的結點組成。typedef struct lnode lnode void mergelinkedlist lnode a,lnode b,lnode c 要改變的變數使用...

演算法設計周記(十) 棧

給定乙個擁有固定格式的字串n s 將其解析成ss s 重複n次 的形式。這題涉及到符號匹配,可以考慮使用棧這一filo的資料結構來幫助解決問題。因為數字必定表示倍數,不會是轉換後的字串的內容,所以遍歷字串遇到數字時,將其轉換成整數形式存在int棧內 若是讀到字母,將其存入快取字串 符號意味著重複字串...

初級演算法之設計問題 最小棧

設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack minstack.push 2 m...