一、定義:限定僅在表尾進行插入和刪除操作的線性表。插入和刪除的一端稱為棧頂,另一端稱為棧底。沒有元素的稱為空棧。又稱為後進先出線性表,簡稱為lifo結構
二、棧的順序儲存結構:使用陣列作為儲存的容器,因為只需要再表的一端進行儲存和刪除所以進棧出棧的時間複雜度均為o(1)。與順序表一樣順序儲存結構的棧也需要考慮溢位問題
三、兩個棧共享儲存空間:兩個棧再陣列的兩端想中間靠攏。只要兩個棧的棧頂指標相差不為一兩個棧就沒有滿。即:當top1+1=top2時棧滿。
四、棧的鏈式儲存結構:使用鍊錶實現,棧頂指標為鍊錶的頭指標(對於鏈棧來說不需要頭節點),鏈棧與鍊錶一樣不需要考慮棧的溢位問題
1、進棧:鏈棧再新的元素入站後棧頂指標需要指向新的元素。舊的棧頂為新元素的後繼。
2、出棧:元素出棧後棧頂指標指向原棧頂的後繼。
3、空棧:如果鏈棧為空則棧頂指標為空指標。
五、棧的應用:
2、四則運算表示式求值:使用棧將中綴表示式轉換成字尾表示式,在用棧求字尾表示式的值。
1、中綴表示式轉字尾表示式規則:從左到右便利中綴表示式,若是數字就輸出,即成為字尾表達是的一部分。若是符號,則判斷其與棧頂符號的優先順序,是右括號或優先順序低於棧頂符號,則棧頂元素一次出棧並輸出,直到棧頂元素優先順序小於當前符號或者棧為空,當前符號進棧。
2、計算字尾表示式:從左到右遍歷表示式的每個數字和符號,遇到數字就進棧,遇到是符號,就將處於棧頂的兩個數字出棧,進行運算,運算結果進棧直到最終獲得結果。
資料結構 棧 棧
可以把棧想像成乙個桶 進棧 就是把和桶口一樣大的燒餅往桶裡面扔 出棧 就是把燒餅拿出來 特點 先進後出。先扔進去的燒餅最後才能拿出來,最後扔進去的燒餅,第乙個拿出來 剛開始top 1 top 1 然後把進棧的元素賦值給data top 入棧操作 void push stack s,int x els...
資料結構 棧
例子 棧是一種被限制在只能在表的一端進行插入和刪除運算的線性表。區域性變數是用棧來儲存的 可以進行插入和刪除的一端稱為 棧頂 top 另一端稱為 棧底 bottom 當表中沒有元素時 表長為0的棧 稱為 空棧。棧的修改是按 後進先出的原則進行,因此棧被稱為後進先出 last in first out...
資料結構 棧
1.棧stack 是限定僅在表尾進行刪除和插入操作的線性表。允許插入刪除的一端叫做棧頂top,另外一端叫做棧底bottom。棧又稱為後進先出 lifo 的線性表。即表尾是指棧頂。2.順序棧 定義 top指向可存入元素的位置。typedef struct stacktypestacktype 插入 進...