隊(duì)列:只允許在一端進(jìn)行插入操作崎苗,而在另一端進(jìn)行刪除操作的線性表檩咱。
循環(huán)對(duì)列:頭尾相接的順序存儲(chǔ)結(jié)構(gòu)。若隊(duì)列不空驯绎,尾指針指向隊(duì)列尾部元素的下一個(gè)位置完慧。
【當(dāng)標(biāo)志變量flag==rear,且flag=0時(shí)為隊(duì)列空剩失,當(dāng)front==rear屈尼,且flag=1時(shí)為隊(duì)列滿】
計(jì)算隊(duì)列長(zhǎng)度公式:(rear-front+QueueSize)%QueueSize
棧:是限定僅在表尾進(jìn)行插入和刪除操作的線表。
兩棧共享:只針對(duì)兩個(gè)具有相同類型的棧的一個(gè)設(shè)計(jì)拴孤,一個(gè)棧增長(zhǎng)脾歧,一個(gè)棧縮短演熟,(相當(dāng)于一個(gè)棧的棧底為數(shù)組的始端鞭执,下標(biāo)為0處,另一個(gè)棧的棧底為末端芒粹,兩個(gè)棧如果增加元素兄纺,就是兩端點(diǎn)向中間延伸)否則會(huì)因棧滿而溢出。這樣讓兩個(gè)棧共享數(shù)據(jù)化漆,可以最大化地利用數(shù)據(jù)空間估脆。
棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):對(duì)于鏈棧,基本不存在棧滿的情況座云,除非內(nèi)存已經(jīng)沒(méi)有可以使用的空間疙赠。此時(shí)計(jì)算機(jī)面臨死機(jī)崩潰問(wèn)題。
鏈棧的空其實(shí)就是top=NULL
- 順序存儲(chǔ):線性表的順序存儲(chǔ)是指用一組地址連續(xù)的存儲(chǔ)單元一次存儲(chǔ)線性表的數(shù)據(jù)元素朦拖。在C語(yǔ)言中圃阳,可以使用動(dòng)態(tài)數(shù)組來(lái)實(shí)現(xiàn)線性表的順序存儲(chǔ)。
- 棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):采用單鏈表實(shí)現(xiàn)璧帝,鏈棧的優(yōu)點(diǎn)是不存在棧滿上溢的情況限佩,規(guī)定棧的所有操作都是在單鏈表的表頭進(jìn)行的
**順序棧與鏈棧的區(qū)別:
**
- 順序棧需要事先確定一個(gè)固定的長(zhǎng)度,可能會(huì)存在空間的浪費(fèi)裸弦,但是存取時(shí)定位很方便祟同。
- 鏈棧則要求每一個(gè)元素都有指針域,同時(shí)也增加了一些內(nèi)存開銷理疙,但棧的長(zhǎng)度無(wú)限制晕城。
遞歸函數(shù):一個(gè)直接調(diào)用自己或通過(guò)一系列的調(diào)用語(yǔ)句間接的調(diào)用自己的函數(shù)。
對(duì)于每一層遞歸窖贤,函數(shù)的局部變量砖顷,參數(shù)值以及返回地址都被壓入棧中贰锁,在退回階段,位于棧頂?shù)木植孔兞柯蓑穑瑓?shù)值和返回地址被彈出豌熄,用于返回調(diào)用層次中執(zhí)行代碼的其余部分,也就是恢復(fù)了調(diào)用的狀態(tài)物咳。
迭代使用循環(huán)結(jié)構(gòu)锣险,遞歸使用選擇結(jié)構(gòu)
**棧的四則運(yùn)算表達(dá)式求值
**
標(biāo)準(zhǔn)四則運(yùn)算表達(dá)式叫做中綴表達(dá)式,所有的運(yùn)算符號(hào)都在兩數(shù)字的中間览闰。
中綴表達(dá)式----->后綴表達(dá)式:
規(guī)則:從左到右遍歷中綴表達(dá)式的每個(gè)數(shù)字和符號(hào)芯肤,若是數(shù)字就輸出,即成后綴表達(dá)式的一部分压鉴;若是符號(hào)崖咨,則判斷其與棧頂符號(hào)的優(yōu)先級(jí),是右括號(hào)或優(yōu)先級(jí)別低于棧頂符號(hào)(乘除優(yōu)先加減)則棧頂元素依次出棧并輸出油吭,并將當(dāng)前符號(hào)進(jìn)棧击蹲,一直到最終輸出后綴表達(dá)式為止。