**不能直接用。
使用游標形式使得三棧共享。
用一維陣列a[m]儲存空間建立三個棧,其中前三個單元的next存放三個棧頂的指標, 第四個單元起共享。
從鍵盤輸入n個整數按下列條件進棧:
(1) t<80 進1棧
(2) 80=100 進3棧
3.1 結構體和函式宣告
1//#define max
2 typedef struct
node
3 node;
7int share(node a, int
n);8
void
print(node a);
9void cancel(node a, int top, int n);
3.2 主函式
1void
main()
2
3.3 構建三棧共享
1int share(node a, int n) //
參考頭插法228
else
if(壓入二棧)
29//
同理30
else
if(壓入三棧)
31//
同理32}33
return
top;
34 }
入棧的方式可以參考鍊錶的頭插法,至於尾插法是否可行讀者可以自行研究。
3.4 輸出各棧元素
1void
print(node a)
214 printf("\n"
);15
}16 }
3.5 出棧
1void cancel(node a, int top, intn)2
出棧要保證「先入後出」。
csdn同名
線性表 多棧共享技術 十
棧的應用非常廣泛,經常會出現乙個程式中需要同時使用多個棧的情況。若使用順序棧,會因為對棧空間大小難以準確估計,從而產生有的棧溢位 有的棧空間還很空閒的情況。為了解決這個問題,可以讓多個棧共享乙個足夠大的陣列空間,通過利用棧的動態特性來使其儲存空間互相補充,這就是多棧的共享技術。在順序棧的共享技術中,...
線性表 棧 佇列
輔助定義 define maxsize 5 define ok 0 define error 1 typedef int selemtype typedef int status 棧 順序 鏈式 相關結構體定義 順序棧 typedef struct sqstack 順序棧共享空間 typedef s...
特殊線性表 棧
定義 限定僅在表尾進行插入和刪除操作的線性表。操作特性 後進先出。注意 棧只是對錶插入和刪除操作的位置進行了限制,並沒有限定插入和刪除操作進行的時間。const int max size 100 template class t class seqstack template class t voi...