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