一:棧的定義
棧是一種特殊的線性表
棧通常有兩種實現方式:順序結構實現和鏈式結構實現
性質:後進先出(lifo)--last in first out
二:棧的應用實戰--編譯器符號成對檢測
當需要檢測成對出現但又互不相鄰的事物時,使用棧的「後進先出」特性
演算法思路
從第乙個字元開始掃瞄
當遇見普通字元時忽略,當遇見左符號時壓入棧中
當遇見右符號時從棧中彈出棧頂符號
進行匹配
匹配成功,繼續讀入下乙個字元
匹配失敗,立即停止,並報錯
結束成功:所有字元掃瞄完畢,且棧為空
失敗:匹配失敗或所有字元掃瞄完畢但棧非空
演算法框架
三:棧的應用實戰--計算器程式的實現
中綴表示式和字尾表示式
中綴表示式符合人們的思維習慣
字尾表示式符合計算機的運算方式
5+3 ——>53+
1+2*3 ——>123*+
9+(3-1)*5+8/2——>931-5*+82/+
中綴表示式轉字尾表示式
對於數字:直接輸出
對於符號:
左括號:進棧
符號:與棧頂符號進行優先順序比較
棧頂符號優先順序低:進棧
棧頂符號優先順序不低:將棧中符號全部彈出並輸出,之後進棧
右括號:將棧頂符號彈出並輸出,直到匹配左括號
遍歷結束:將棧中所有符號彈出並輸出
演算法框架
字尾表示式的計算
對於數字:進棧
對於符號:
從棧中彈出右運算元
從棧中彈出左運算元
根據符號進行運算
將運算結果壓入棧中
遍歷結束:棧中唯一數字為計算結果
演算法框架
棧的定義及基本演算法實現
棧定義 是一種只能在一端進行插入或刪除操作的線性表 1 允許 進行插入 刪除操作的一端稱為 棧 頂 2 表的另一端稱為 棧底 3 當棧中沒有資料元素時 稱為 空棧 4 棧的插入操作通常稱為 進棧 或 入 棧 5 棧的刪除操作通常稱為 退棧 或 出棧 例如 死胡同就是乙個棧 洗1疊碗時的取放 棧據有先...
棧的定義及基本操作
1 定義 棧是僅限定在表的一端操作的線性表 2 性質 先進後出 後進先出 3 棧的儲存方式 順序儲存和鏈式儲存 順序棧的型別定義 typedef struct stack 棧的壓入操作 1 首先判斷是否棧滿,若棧滿,則輸出 棧滿溢位 2 先指標top 棧元素值 push s,e return s 棧...
棧的實現及應用
1.棧定義 棧又稱堆疊,是一種運算受限的線性表,限制是僅僅允許在表的另外一端進行插入和刪除運算。2.特點 後進先出 cpu快取利用率相對較高 不允許隨意訪問 3.實現方式 棧有兩種實現方式,一種是順序儲存,和陣列類似。一種是鏈式儲存,和單鏈表類似。這是在2013編譯器下 棧裡面有以下幾種函式 voi...