資料結構預習筆記(棧和佇列)

2021-08-10 01:33:00 字數 1591 閱讀 7177

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.鏈式隊 總結棧又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它...