堆栈总结
- 堆棧
- 什么是堆棧
- 堆棧的抽象數(shù)據(jù)類型描述
- 棧的順序存儲實現(xiàn)
堆棧
什么是堆棧
計算機(jī)如何進(jìn)行表達(dá)式求值?
算術(shù)表達(dá)式5+6/2-3*4。
正確理解:
5+6/2-3*4 = 5+3-3*4 = 8-3*4 = 8-12 = -4
由兩類對象構(gòu)成的:
運算數(shù),如2、3、4
運算符號,如+、-、*、/ ? 不同運算符號優(yōu)先級不一樣
后綴表達(dá)式
中綴表達(dá)式:運算符號位于兩個運算數(shù)之間。如 ,a + b * c - d / e
后綴表達(dá)式:運算符號位于兩個運算數(shù)之后。如, a b c *+ d e /-
后綴表達(dá)式求值策略:從左向右“掃描”,逐個處理運算數(shù)和運算符號
1. 遇到運算數(shù)怎么辦?如何“記住”目前還不未參與運算的數(shù)?
2. 遇到運算符號怎么辦?對應(yīng)的運算數(shù)是什么?
6 2 / 3 - 4 2 *+ = ?
6/2-3+4*2
注意后綴的運算數(shù)是緊挨著運算符號之前的兩個數(shù)
啟示:需要有種存儲方法,能順序存儲運算數(shù), 并在需要時“倒序”輸出!
堆棧(Stack):
具有一定操作約束的線性表 只在一端(棧頂,Top)做 插入、刪除
插入數(shù)據(jù):入棧(Push)
刪除數(shù)據(jù):出棧(Pop)
后入先出:Last In First Out(LIFO)
堆棧的抽象數(shù)據(jù)類型描述
類型名稱: 堆棧(Stack)
數(shù)據(jù)對象集:一個有0個或多個元素的有窮線性表。
操作集:長度為MaxSize的堆棧S Stack,堆棧元素item ElementType
1、Stack CreateStack( int MaxSize ): 生成空堆棧,其最大長度為MaxSize;
2、int IsFull( Stack S, int MaxSize ):判斷堆棧S是否已滿;
3、void Push( Stack S, ElementType item ):將元素item壓入堆棧;
4、int IsEmpty ( Stack S ):判斷堆棧S是否為空;
5、ElementType Pop( Stack S ):刪除并返回棧頂元素
Push 和 Pop 可以穿插交替進(jìn)行;
按照操作系列 (1)Push(S,A), Push(S,B),Push((S,C),Pop(S),Pop(S),Pop(S) 堆棧輸出是? CBA
(2) 而Push(S,A), Pop(S),Push(S,B),Push((S,C),Pop(S),Pop(S) 堆棧輸出是? ACB
棧的順序存儲實現(xiàn)
棧的順序存儲結(jié)構(gòu)通常由一個一維數(shù)組和一個記錄 棧頂元素位置的變量組成。
1.入棧 2.出棧 3.判斷 棧滿 棧空
堆棧的其他應(yīng)用:
函數(shù)調(diào)用及遞歸實現(xiàn)
深度優(yōu)先搜索
回溯算法
。。。
總結(jié)
- 上一篇: 物理实验数据处理(c语言)
- 下一篇: (二叉树DFS)下落的树叶