資料結構 筆記4 棧和佇列

2022-03-29 16:21:31 字數 1130 閱讀 6484

棧(stack)

是限定在表的一端進行插入和刪除運算的線性表。

插入,刪除的一段稱為棧頂(top),另一端為棧底(buttom)。

不含元素的空表稱為空棧。

棧又被稱為後進先出(last in first out)的線性表

棧的順序結構(順序棧)

1.棧的順序儲存結構稱為順序棧。

2.當棧滿時再做進棧運算必定產生控制項溢位,簡稱「上溢」

3.當棧空時再做退棧運算也將產生溢位,簡稱「下溢」

3.棧的鏈式儲存結構(棧鏈)

1.為了 克服順序儲存結構分配固定空間所產生的溢位和空間浪費問題,採用鏈式儲存結構來儲存棧

棧有乙個非常重要的應用是在程式語言中實現遞迴,乙個直接呼叫自己或者間接呼叫自己的函式,稱之為遞迴函式。

遞迴演算法的設計分為兩步:

1.將規模較大的問題分解為乙個或多個規模較小的而又類似於原問題特性的子問題,即將較大問題遞迴地用較小的子問題來描述,解原問題的方法同樣可以用來解決子問題。

2.是確定乙個或多個不需要分解,可直接求解的最小子問題。

第一步稱為遞迴步驟,第二部中最小子問題稱為遞迴的終止條件

佇列(queue)

1佇列也是一種操作受限的線性表,它只允許在表的一端插入,而另一端進行元素刪除,允許插入的一段稱為隊尾(rear),允許刪除的一端稱為對頭(front

2.元素的插入稱為入隊,元素刪除稱為出隊

3.佇列又稱為先進先出(first in first out)表

順序迴圈佇列

佇列的順序儲存結構稱為順序結構

為了充分利用數字空間,克服上溢,可將陣列空間想象為乙個環狀空間,稱這種環狀陣列表示的隊列為迴圈佇列

一般情況下真正實用的順序佇列是迴圈佇列。

判斷順序迴圈佇列是否為「滿」的三種方法:

1.靈設乙個標識位,以區別佇列是「空」還是「滿」

2.設定乙個計數器記錄佇列中的元素個數

3.少用乙個元素空間,約定入隊前,測試尾指標在迴圈意義下加1後是否等於頭指標,若相等則認為佇列滿,即尾指標q.rear所指向的單元始終為空。

c語言**:

int queuefull(cirqueue *q)

鏈佇列1.佇列的鏈式儲存結構稱為鏈佇列

2.鏈佇列一般不帶頭結點

資料結構筆記 棧和佇列

棧和佇列的特性,乙個是先進後出,乙個是先進先出。對於棧來說,可以通過鍊錶或者陣列來進行實現 對於順序棧來說,如下 順序棧類seqstack的類定義 const int stacksize 10 10是示例性的資料,根據實際問題具體定義 template 定義模板類seqstack class seq...

資料結構筆記 棧和佇列

1 棧1.1 棧基本概念 出棧和入棧 棧的本質是乙個線性表,線性表有兩種儲存形式,那麼棧也有分為棧的順序儲存結構和棧的鏈式儲存結構 最開始棧中不含有任何資料,叫做空棧,此時棧頂就是棧底。資料從棧頂進入,棧頂棧底分高,整個棧的當前容量變大 資料出棧時從棧頂彈出,棧頂下移,整個棧的當前容量變小 1.2 ...

資料結構 棧和佇列筆記

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