關於兩個棧的共享空間問題理解。

2021-06-16 07:52:53 字數 809 閱讀 8251

為什麼要共享空間?誰用誰的多好呀!但是呢,我們都知道使用過程中我們給每個棧分配足夠的空間是不太現實的,使用棧的時候,我們也不能保證棧有足夠的空間,另外,棧是乙個動態的儲存結構,各個棧的實際大小在使用的過程中都會發生變化的,有時候其中乙個已經上溢了,而另外乙個還沒用怎麼使用。這樣必定會造成空間的利用率降低。怎麼辦?怎麼辦?

共享空間可以解決一定的問題。

棧共享示意圖 棧一

共享空間棧二

棧一是從棧底開始的,而棧二是從棧頂開始(其實都是棧底)棧一的位置為stack[0],棧二為stack[maxsize-1];通過觀察,只有當棧一和棧二的棧頂指標相遇時,這兩個棧才滿了,溢位來了。

忘了交代一下,這兩個棧的棧頂指標相加正好為maxsize-1;有這個規律,相信你在操作的過程中就不會遇見很大的問題了。

下面提示部分**為:將乙個元素item插入第1或者第2個棧的方法;

int push(int top,int i,int item)

else

else

stack[top[i - 1]] = item;   // 插入元素item;

return 1;                    // 棧沒滿,插入成功;}}

// 刪除操作同樣地方法;

int pop(int top,int i,int& item)

else

}else

else}}

總結一下,這樣的共享空間問題,估計是我很少遇到的。因為多個棧共享連續的空間優點很明顯:節省空間。但是弊端很大,就是要移動大量的資料元素,這樣也體現了順序表固有的缺陷。不提倡。接下來看stack的鏈式實現吧。

兩棧共享儲存空間(用乙個陣列儲存兩個棧)

思想 先開闢一段連續的儲存空間 乙個陣列 兩個棧棧頂分別指向陣列的兩端,隨著push操作兩棧的棧頂向陣列內側移動 隨著pop操作兩棧的棧頂向陣列外側移動。include include 棧的順序儲存結構,用一維陣列實現 define ok 1 define error 1 define true 1...

乙個陣列實現兩個棧 共享棧

問題分析 在順序棧的實現中,元素入棧是從下標為0的位置向上增長的,出棧是通過size 實現的。要想用乙個陣列實現2個棧,可以除了下標從0開始增長,還同時讓另乙個棧下標從size 1處開始減少。問題解決 定義top1,top2分別代表2個棧棧頂的下乙個位置的下標。棧1入棧時,元素放入top1位置,再使...

關於進製的兩個問題

進製轉換主要看個位與個位相乘。1 例如30 中在十進位制中有多少個0呢?5 120 隨後120 6 7 8 9都沒有零出現因為個位相乘沒有零。直到10!出現2個零。所以規律是尋找相乘等於5的因子數。有幾個5就有幾個零。所以20!5!有1個0 1 5 10!有2個0 2 5 15!有3個0 3 5 2...