在純陣列形式上做改動,兩個變數用於記錄兩個棧的棧頂元素位置。
struct stack
;
本質上就是兩個棧的混合,分別記為front和back,front是在前面的棧,初始化為-1,從頭開始增加,back是在後面的棧,初始化為initsize,從尾部開始遞減。特別的地方是判斷是否滿了,如果兩個位置相隔為1,那麼說明共享棧已滿,不能再繼續新增元素。
#include
using
namespace std;
int initsize=10;
struct stack
;struct stack s;
void
init()
bool
push
(int num,
int tar)
intpop
(int tar)
else
}bool
isempty
(int tar)
else
}void
print()
if(isempty(2
))printf
("the back stack is empty!\n");
else
}void
pushmode()
void
popmode()
inttop()
}int
main()
printf
("back stack:");
scanf
("%d"
,&n)
;for
(int i=
0;i)while
(choice!=0)
}free
(s.data)
;return0;
}
資料結構 共享棧和鏈式結構棧
共享棧其實就是兩個棧,合起來,共享乙個陣列存資料。這樣子的好處就是,兩個棧同乙個空間。當棧1的資料多,棧2資料比較少,就可以這樣子共享,對空間的浪費就會減少。當棧1為空,top1 1 棧2為空,top2 n 關鍵 有兩個棧底,和兩個棧頂top1,top2,從陣列兩端向中間靠攏。當 top1 1 to...
資料結構 棧部分 雙棧共享空間
include using namespace std const int max cont 100 enum stacktype template class datatype class sqdoublestack sqdoublestack const datatype a1,int num1...
資料結構中棧的相關操作(共享棧)
為共享棧的相關操作,主要操作為初始化棧 兩端分別入棧出棧,分別進行棧頂元素獲取等功能。由標頭檔案 sqdoublestack.h 介面實現 sqdoublestack.c 和測試檔案 main.c 三部分組成。sqdoublestack.h ifndef sqdstack define sqdsta...