之前討論的連續實現的佇列結構(佇列(queue)——先進先出(fifo)的資料結構(data structures))與連續棧結構存在著同樣的缺點,即都需要大片連續的儲存空間。而這個問題在佇列結構裡更加嚴重。解決的辦法則與連續棧結構問題的辦法一樣:使用鏈結佇列。鏈結佇列實現除了不需要連續空間外,其所支援的操作型別和數量與連續佇列完全一樣。
連線佇列的類定義與連續佇列相比,資料成員為頭尾兩個指向node結構的指標,這裡的node既可以是節點的定義,也可以死任意使用者定義的結構。
下面是鏈結佇列類定義。
//link queue in c++
typedef int queueentry;
const int success = 0;
const int overflow = 1;
const int underflow = 2;
const int failure = -1;
const int null = 0;
const int maxqueue = 100; //佇列的最大尺寸
struct node //鏈結佇列的節點定義
;class queue
bool queue::empty() const //檢查佇列是否為空
if (tail == null)
head = tail = new_tail;
else
return success;
} int queue::serve() //刪除隊頭元素
int queue::retrieve(queueentry &item) const //取出隊頭元素
queue::~queue() //構析函式
while (head->next != null);
}} }
protected:
node * head, * tail;
};
LinkQueue 鏈式佇列
鏈式佇列實現起來很簡單。唯一需要注意的是 在入隊和出隊時,需要分別處理一下隊頭和隊尾為空的情況。file name linkqueue.h author zhoufeng date 2012 03 28 ifndef link queue h define link queue h define b...
佇列 佇列的鏈式儲存方式 LinkQueue
佇列的鏈式儲存結構 功能 包含 1 佇列的鏈式儲存結構的資料結構定義 2 初始化鏈式佇列 3 往鏈式佇列中插入元素 入隊 4 刪除鏈式佇列中的元素 出隊 注意 不進行debug,只實現基本功能 author tmw date 2018 3 9 include include include defi...
鏈結佇列的基本演算法
所謂鏈結佇列就是用乙個線性鍊錶來表示乙個佇列,佇列中每個元素對應鍊錶中乙個鏈結點,隊頭指標front指向線性鍊錶的第1個鏈結點,隊尾指標rear指向鍊錶的最後乙個鏈結點,與順序儲存結構的佇列不同的是,隊頭指標和隊尾指標都是指向實際隊頭元素和隊尾元素所在的鏈結點。測試鏈結隊列為空的條件是front為n...