線性結構 共享棧

2021-07-01 19:21:35 字數 1057 閱讀 5891

如果乙個程式需要使用多個棧,使用順序棧就會造成棧空間大小難以估計,從而造成有的棧溢位有的棧空閒,此時可以建立乙個共享棧,通俗地講就是將兩個棧的棧底設定在同乙個陣列的兩端,棧頂位置用top1、top2表示。如圖:

所以共享棧的資料結構型別為:

#include #define max 10

#define inf 0xfffffff

typedef int datatype;

struct dstack

;

基本操作實現:

void initdstack(dstack &s)

bool isfull(dstack &s)

void push(dstack &s, datatype e, int tag)

if(tag)

s.data[s.top1++] = e;

else

s.data[s.top2--] = e;

}bool isempty(dstack &s, int tag)

datatype pop(dstack &s, int tag)

if(tag)

return s.data[--s.top1];

else

return s.data[++s.top2];

}

測試**:

int main()

for(int i = 0; i < 10; i++)

printf("\n");

push(s, 100, 1);

push(s, 100, 0);

printf("\n\n");

//測試pop

for(int i = 0; i < 5; i++)

t1 = pop(s, 1);

t2 = pop(s, 0);

return 0 ;

}

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

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

資料結構 線性結構 棧

棧 和佇列相反的作用,越是先存入的資料就得越到後才能取出,根據這個特性可以用陣列或鍊錶模擬出棧。陣列模擬棧 新增資料正常順序,每天加乙個數棧頂加一次,彈棧的時候將棧頂指標的數彈出即可,遍歷棧陣列時是從棧頂開始迴圈。1 class arraystack9 判斷棧是否已滿 10public boolea...

資料結構 共享棧和鏈式結構棧

共享棧其實就是兩個棧,合起來,共享乙個陣列存資料。這樣子的好處就是,兩個棧同乙個空間。當棧1的資料多,棧2資料比較少,就可以這樣子共享,對空間的浪費就會減少。當棧1為空,top1 1 棧2為空,top2 n 關鍵 有兩個棧底,和兩個棧頂top1,top2,從陣列兩端向中間靠攏。當 top1 1 to...