棧的應用非常廣泛,經常會出現乙個程式中需要同時使用多個棧的情況。若使用順序棧,會因為對棧空間大小難以準確估計,從而產生有的棧溢位、有的棧空間還很空閒的情況。為了解決這個問題,可以讓多個棧共享乙個足夠大的陣列空間,通過利用棧的動態特性來使其儲存空間互相補充,這就是多棧的共享技術。在順序棧的共享技術中,最常用的是兩個棧的共享技術,名雙端棧。
棧1和棧2新增元素時,都會向資料中間靠攏,當棧1的指標+1等於棧2的指標的時候,棧滿。
#define m 100
typedef
struct
dqstack;
void
initstck
(dqstack * s)
int
push
(dqstack * s,
int x,
int i)
return
(true)
;}
int
pop(dqstack * s,
int*x,
int i)
return
(true)
;}
若有錯誤,歡迎指正批評,歡迎討論。每文一句:做事有兩種境界。一種是功利的境界,事情及相關的利益是唯一的目的,於是做事時必須會充滿焦慮和算計。另一種是道德的境界,無論做什麼事,都把精神上的收穫看得更重要,做事只是靈魂修煉和完善的手段,真正的目的是做人。正因為如此,做事時反而有了一種從容的心態和博大的氣象。做事即做人。
線性表作業 三棧共享
不能直接用。使用游標形式使得三棧共享。用一維陣列a m 儲存空間建立三個棧,其中前三個單元的next存放三個棧頂的指標,第四個單元起共享。從鍵盤輸入n個整數按下列條件進棧 1 t 80 進1棧 2 80 100 進3棧 3.1 結構體和函式宣告 1 define max 2 typedef stru...
線性表 棧 佇列
輔助定義 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...