一、數(shù)據(jù)結(jié)構(gòu)中,雙棧共享的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
兩棧的大小不是固定不變的,在實(shí)際運(yùn)算過程中,一個棧有可能進(jìn)棧元素多而體積大些,另一個則可能小些。
兩個棧共用一個??臻g,相互調(diào)劑,靈活性強(qiáng)。
缺點(diǎn)
運(yùn)算較為復(fù)雜。
長度為定值,中途不易擴(kuò)充。
注:n(n>2)個棧的情況更有所不同,采用多個棧共享?xiàng)?臻g的順序存儲表示方式,處理十分復(fù)雜,在插入時元素的移動量很大,因而時間代價較高。特別是當(dāng)整個存儲空間即將充滿時,這個問題更加嚴(yán)重。
解決上述問題的辦法就是采用鏈接方式作為棧的存儲表示方式。
雙棧的適用情況
當(dāng)棧滿時要發(fā)生溢出,為了避免這種情況,需要為棧設(shè)立一個足夠大的空間。但如果空間設(shè)置得過大,而棧中實(shí)際只有幾個元素,也是一種空間浪費(fèi)。此外,程序中往往同時存在幾個棧,因?yàn)楦鱾€棧所需的空間在運(yùn)行中是動態(tài)變化著的。如果給幾個棧分配同樣大小的空間,可能實(shí)際運(yùn)行時,有的棧膨脹得快,很快就產(chǎn)生了溢出,而其他的??赡艽藭r還有許多空閑空間。這時就可以利用雙棧,兩個棧共用一個??臻g,相互調(diào)劑,靈活性強(qiáng)。
延伸閱讀:
二、數(shù)據(jù)元素的機(jī)內(nèi)表示
數(shù)據(jù)元素的機(jī)內(nèi)表示(映像方法): 用二進(jìn)制位(bit)的位串表示數(shù)據(jù)元素。通常稱這種位串為節(jié)點(diǎn)(node)。當(dāng)數(shù)據(jù)元素有若干個數(shù)據(jù)項(xiàng)組成時,位串中與個數(shù)據(jù)項(xiàng)對應(yīng)的子位串稱為數(shù)據(jù)域(data field)。因此,節(jié)點(diǎn)是數(shù)據(jù)元素的機(jī)內(nèi)表示(或機(jī)內(nèi)映像)。