棧和隊(duì)列遺漏知識點(diǎn)補(bǔ)充!

看了考研的數(shù)據(jù)結(jié)構(gòu)書,發(fā)現(xiàn)之前有一些關(guān)于棧和隊(duì)列的遺漏的知識點(diǎn),現(xiàn)在補(bǔ)充一下。

1、棧的數(shù)學(xué)性質(zhì)-卡特蘭數(shù)

當(dāng)n個元素以某種順序進(jìn)棧,并且可以在任意時刻出棧時,所獲得的元素排列的樹木N恰好滿足Catalan()的計(jì)算,即N=C(n,2n)/(n+1)
有關(guān)卡特蘭數(shù)的概念,可以參考之前我整理過的一篇文章:http://www.lxweimin.com/p/dfb1d00bcf5e

2、循環(huán)隊(duì)列

循環(huán)隊(duì)列中,隊(duì)首指向第一個元素的前一個位置,隊(duì)尾指向最后一個元素的位置。
隊(duì)空的條件:rear==front
隊(duì)滿的條件:(rear +1)% (maxSize)==front

3、共享?xiàng)?/h2>

相比于普通的順序棧,共享?xiàng)V饕菫榱颂岣邇?nèi)存的利用率和減少溢出的可能性而設(shè)計(jì)的。當(dāng)兩個棧共享共享一片連續(xù)的內(nèi)存空間時,應(yīng)將兩棧的棧底分別設(shè)在這片內(nèi)存空間的兩端,這樣當(dāng)兩個棧的棧頂在棧空間的某一位置相遇時,才產(chǎn)生上溢。

4、雙端隊(duì)列

雙端隊(duì)列是一種插入和刪除操作在兩端均可進(jìn)行的線性表。可以把雙端隊(duì)列看成棧底連在一起的兩個棧,它們與兩個棧共享存儲空間的共享?xiàng)2煌幨牵瑑蓚€棧的棧頂指針是向兩端延伸的。由于雙端隊(duì)列允許在兩端插入和刪除元素,所以需要設(shè)立兩個指針:end1和end2,分別指向雙端隊(duì)列中的兩端的元素。

允許在一端進(jìn)行插入和刪除,另一端只允許刪除的雙端隊(duì)列成為輸入受限的雙端隊(duì)列,而允許在一端進(jìn)行插入和刪除,另一端只允許插入的雙端隊(duì)列成為輸出受限的雙端隊(duì)列。

5、棧的應(yīng)用-后綴表達(dá)式

棧的一個很重要的應(yīng)用就是后綴表達(dá)式,有關(guān)后綴表達(dá)式的如何寫參照我之前的一個博文:http://www.lxweimin.com/p/8b38f61693b9
之前以為只有加減乘除可以出現(xiàn),其實(shí)關(guān)系運(yùn)算符和邏輯運(yùn)算符也可以出現(xiàn)的,這里要注意她們的優(yōu)先級,關(guān)系運(yùn)算符的優(yōu)先級是要高于邏輯運(yùn)算符的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容