順序儲存之兩棧共享空間原理

2021-10-07 09:42:37 字數 440 閱讀 9656

反覆看了幾遍《大話資料結構》第四章的4.5節,始終不太理解順序儲存的兩棧共享是如何實現的(一開始被圖4-5-1誤導了,以為是通過兩個陣列來實現)。讀完參考鏈結的部落格後,恍然大悟。要點整理如下:

在乙個陣列(長度為n)中有兩個棧;

陣列的始端和尾端分別是兩個棧的棧底;

對於棧底為陣列始端的棧1,插入元素時棧頂指標值(對應陣列下標值)top1增加,刪除元素時top1減少;

對於棧底為陣列尾端的棧2,插入元素時棧頂指標值top2減少,刪除元素時top2增加;

當且僅當兩棧的棧頂相遇時,即top1 + 1 == top2時,棧滿,即陣列被全部填充;

top1 == -1時,棧1為空;

top2 == n時,棧2為空;

插入元素時,需要判斷是否棧滿,以及要把元素插入到棧1還是棧2;

刪除元素時,需要判斷棧1或棧2是否為空,並刪除相應的元素。

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

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

兩棧共享儲存空間 線性結構棧

ifndef doublestack h define doublestack h 1 引入 1.如果需要兩個相同型別的棧 順序結構 分別為了兩個棧開闢儲存空間。極有可能出現的情況是棧1已經滿了,而棧2還有很多空閒區域。這樣就不合理。2.解決方法是使用乙個陣列來同時儲存兩個這兩個棧,這樣可以讓兩個順...

棧 兩棧共享空間

對於乙個棧,我們只能盡量考慮周全,設計出合適大小的陣列處理。但是,對於兩個相同型別的棧,我們卻可以做到最大限度地利用其事先開闢的儲存空間進行操作。我們可以用乙個陣列來儲存兩個棧,只不過需要一點小技巧。陣列有兩個端點,兩個棧有兩個棧底,讓乙個棧的棧底為陣列的始端,即下標為0處。另乙個棧的棧底為陣列的末...