3 3順序棧的兩棧共享

2021-10-06 06:08:51 字數 865 閱讀 1005

棧的應用非常廣泛,經常會出現在乙個程式中需要同時使用多個棧的情況。若使用順序棧,會因為對棧空間大小難以準確估計,從而產生有的棧溢位、有的棧空間還很空閒的情況。

為了解決這個問題,可以讓多個棧共享乙個足夠大的陣列空間,通過利用棧的動態特性來使其儲存空間互相補充,這就是多棧共享技術。

在順序棧的共享技術中最常用的是兩個棧的共享技術即雙端棧:它主要利用了棧 「棧底位置不變,而棧頂位置動態變化」 的特性。

首先為兩個棧申請乙個共享的一維陣列空間 s[m], 將兩個棧的棧底分別放在一維陣列的兩端,分別是 0,m-1。

由於兩個棧頂動態變化,這樣可以形成互補,使得每個棧可用的最大空間與實際使用的需求有關。由此可見,兩棧共享要比兩個棧分別申請 m/2 的空間利用率要高。

順序棧,兩棧共享空間,鏈棧

棧是一種特殊的線性表,線性表的順序儲存結構和鏈式儲存結構同樣適用於棧。lifo 應用 瀏覽網頁時的撤銷回退操作 include include using namespace std define maxsize 1000 typedef int selemtype typedef struct s...

棧 棧 鏈式棧,順序棧,共享棧

棧也是一種線性表結構,只不過棧的操作是受限的,它的特點就是在棧頂方向新增新的元素,且刪除元素也只能從棧頂方向刪除。因此棧是一種lifo 後進先出 特性的資料結構。壓棧 新的元素放入棧的操作。出棧 從棧中移除乙個元素的操作。因為棧是一種線性結構,所以可以通過前面所學的鍊錶和順序表作為內部實現。我們可以...

棧(順序棧,多棧共享技術,動態順序棧,鏈棧)

include include define stacksize 10 建立 typedef struct seqstack seqstack 初始化 void initstack seqstack s 入棧 int push seqstack s,int elem s top s elem s t...