演算法學習筆記(二) 佇列 棧 鍊錶

2021-07-02 02:28:42 字數 854 閱讀 5597

1 任務:對一串數字順序操作。每次操作扔掉隊首的數字,再把第二個數移動到隊尾,重複這個操作,直至將這一串數字全部刪除。

2 思路:引入兩個整型變數head和tail。head表示隊首,tail表示隊尾+1。刪除隊首,對應著head+1,把數字x移動到隊尾,對應著a[tail]=x,tail++。

3 總結

佇列。佇列是一種特殊的線性結構,它只允許在佇列的首部(head)進行刪除操作,稱為「出隊」,在隊尾(tail)進行插入操作,稱為「入隊」。當佇列中沒有元素時(即head = tail ),稱為「空佇列」。生活中很多場景都是佇列,比如買火車票,排隊打飯等等。為先來的人先服務,稱為先入先出原則(first in first out,fifo)。

佇列是今後學習廣度優先搜尋、佇列優化的bellman-ford最短路徑演算法的核心資料結構。所以現在將佇列的三個基本元素(乙個陣列,兩個變數)封裝為乙個結構體型別,如下:

struct queue    //struct 是結構體的關鍵字,queue是我們為這個結構體起的名字。這個結構體有三個成員,分別是:整型陣列data,整型head和整型tail。

//結構體可以理解為乙個新的資料型別。我們現在定義的是資料型別

;//注意!這裡有分號。

struct queue q;//這是在定義結構體型別的變數。注意這裡struct 和 queue 要整體使用,都寫出來。

4 示例**:

#include struct queue

;int main()

while(q.head < q.tail)//當佇列不為空的時候執行迴圈

return 0;

}

佇列(二)佇列的鍊錶儲存

include define false 0 define ok 1 定義佇列每個節點的結構 typedef struct node node,qnode 相當於typedef struct node qnode 定義整個佇列結構 typedef struct squeue squeue 建立乙個空...

佇列(二) 佇列的鍊錶實現方式

1.佇列的單向鍊錶的實現方法 return只可以返回乙個值,單向迴圈鍊錶來實現佇列的時候可以只保留乙個指標,因為保留rear指標能夠很方便的表示出front指標,所以保留rear指標。另外由於鍊錶的第乙個結點處理比較特殊,所以在初始化的時候需要單獨處理。鍊錶實現的佇列思想也是第乙個單元作為頭結點,不...

佇列(二) 佇列的鍊錶實現方式

1.佇列的單向鍊錶的實現方法 return僅僅能夠返回乙個值,單向迴圈鍊錶來實現佇列的時候能夠僅僅保留乙個指標,由於保留rear指標能夠非常方便的表示出front指標,所以保留rear指標。另外因為鍊錶的第乙個結點處理比較特殊,所以在初始化的時候須要單獨處理。鍊錶實現的佇列思想也是第乙個單元作為頭結...