1,快速開始:
隊列是一種和棧相反的,遵循先進先出原則的線性表。此文章使用鏈表來實現隊列。
如上圖所示,就像一個自來水管,先進入水管的水先從水龍頭出來,即Front位置的元素最先出隊列,因爲它們是最先入隊列的。
2、實現隊列
本代碼是嚴蔚敏教授的數據結構書上面的僞代碼的C語言實現代碼。
一定要多思考,多問爲什麼!
首先我們定義了一些常量:
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef int QElemtype;
typedef int status;
2.1、對隊列和節點的結構定義
既然底層是鏈表,那麼每個節點不僅要保存當前值,還要指向下一個節點的地址。
對於隊列來說,每次插入值都是在隊尾(rear),每次取出值都是在隊首(head),所以,我們一定是有兩個變量來指向隊頭與隊尾的。
綜上所述,我們結構定義代碼如下:
typedef struct QNode { //對節點的結構定義
QElemtype data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{ //對隊列的結構定義
QueuePtr head;
QueuePtr rear;
}LinkQueue;