線性表作業 三棧共享

2022-09-10 13:15:24 字數 991 閱讀 8375

**不能直接用。

使用游標形式使得三棧共享。

用一維陣列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 主函式

1

void

main()

2

3.3 構建三棧共享

1

int share(node a, int n) //

參考頭插法228

else

if(壓入二棧)

29//

同理30

else

if(壓入三棧)

31//

同理32}33

return

top;

34 }

入棧的方式可以參考鍊錶的頭插法,至於尾插法是否可行讀者可以自行研究。

3.4 輸出各棧元素

1

void

print(node a)

214 printf("\n"

);15

}16 }

3.5 出棧

1

void 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...