1.
棧的定義
棧是限制僅在表的一端進行插入和刪除運算的線性表又稱為
後進先出表(lifo表)
。插入、刪除端稱為棧頂,另一端稱棧底
。表中無元素稱空棧。
2 棧的邏輯結構和儲存表示
棧的邏輯結構和線性表相同。
棧的抽象資料型別有兩種典型的儲存表示:基於陣列的儲存表示和基於鍊錶的儲存表示。
(1)基於陣列的儲存表示實現的棧稱為順序棧,順序棧可以採用順序表作為其儲存表示,因此,可以在順序棧的宣告中用順序表定義它的儲存空間。
(2)基於鍊錶的儲存表示實現的棧稱為鏈式棧,鏈式棧可以採用單鏈表作為其儲存表示,因此,可以在鏈式棧的宣告中用單鏈表定義它的儲存空間。 3
.棧的基本運算有:
1) initstack(s),
構造乙個空棧;
2) stackempty(s),
判棧空;
3) stackfull(s),
判棧滿;
4) push(s,x),
進棧;5)
pop (s),
退棧;6)
stacktop(s)
,取棧頂元素。 4.
順序棧的定義
棧的順序儲存結構稱順序棧。
5.棧的
「上溢」
和「下溢」
當棧滿時,做進棧運算必定產生空間溢位,稱「上溢」。 當棧空時,做退棧運算必定產生空間溢位,稱「下溢」。上溢是一種錯誤應設法避免,下溢常用作程式控制轉移的條件。
6.在順序棧上的基本運算:
1) 置空棧。
void initstack(seqstack *s)
2)判棧空。
int stackempty(seqstack *s)
3)判棧滿。
int stackfull(seqstack *s)
4)進棧。
void push(seqstack *s,datatype x)
5)退棧。
datatype pop(seqstack *s)
6)取棧頂元素。
dtatatype stacktop(seqstack *s)
7.鏈棧的定義
棧的鏈式儲存結構稱鏈棧。棧頂指標是鍊錶的頭指標。 8.
鏈棧上的基本運算:
1) 建棧。
void initstack(linkstack *s)
2)判棧空。
int stackempty (linkstack *s)
3) 進棧。
void push(linkstack *s,datatype x)
4) 退棧。
datatype pop(linksatck *s)
5) 取棧頂元素。
datatype stacktop(linkstack *s)
9.佇列的定義
佇列是一種運算受限的線性表,允許刪除的一端稱隊首,允許插入的一端稱隊尾。佇列又稱為先進先出線性表,fifo表。
10.順序佇列
的定義佇列的順序儲存結構稱順序佇列。設定front和
rear
指標表示隊頭和隊尾元素在向量空間的位置。
資料結構筆記 棧和佇列
棧和佇列的特性,乙個是先進後出,乙個是先進先出。對於棧來說,可以通過鍊錶或者陣列來進行實現 對於順序棧來說,如下 順序棧類seqstack的類定義 const int stacksize 10 10是示例性的資料,根據實際問題具體定義 template 定義模板類seqstack class seq...
資料結構筆記 棧和佇列
1 棧1.1 棧基本概念 出棧和入棧 棧的本質是乙個線性表,線性表有兩種儲存形式,那麼棧也有分為棧的順序儲存結構和棧的鏈式儲存結構 最開始棧中不含有任何資料,叫做空棧,此時棧頂就是棧底。資料從棧頂進入,棧頂棧底分高,整個棧的當前容量變大 資料出棧時從棧頂彈出,棧頂下移,整個棧的當前容量變小 1.2 ...
資料結構 棧和佇列筆記
2.鏈棧 棧的應用 二 佇列 2.鏈式隊 總結棧又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它...