佇列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,在表的後端(rear)進行插入操作,進行插入的一端稱為隊尾,進行刪除的一端稱為對頭或隊首。常用的佇列有順序佇列,迴圈佇列等。
順序佇列:建立順序佇列結構必須為其靜態分配或動態申請一片連續的儲存空間,並設定兩個指標進行管理。乙個是隊頭指標front,它指向隊頭元素;另乙個是隊尾指標rear,它指向下乙個入隊元素的儲存位置。如圖所示:
從上圖可以看出,當隊列為空時,頭尾指標相等,即front和rear相等,入隊時執行rear++,即是在隊尾插入乙個元素,出隊front++,即是在隊首刪除乙個元素,當全部出隊時,front和rear又相等。不論是出隊還是入隊,front和rear都是增長的,這樣會出現溢位現象。
迴圈佇列:為充分利用向量空間,克服"假溢位"現象的方法是:將向量空間想象為乙個首尾相接的圓環,並稱這種向量為迴圈向量。儲存在其中的佇列稱為迴圈佇列(circular queue)。這種迴圈佇列可以以單鏈表的方式來在實際程式設計應用中來實現。
如圖所示:在迴圈佇列中,當隊列為空時,有front=rear,而當所有佇列空間全佔滿時,也有front=rear。為了區別這兩種情況,規定迴圈佇列最多只能有maxsize-1個佇列元素,當迴圈佇列中只剩下乙個空儲存單元時,佇列就已經滿了。因此,佇列判空的條件時front=rear,而佇列判滿的條件時front=(rear+1)%maxsize。
#include
#include
#define g_max 10
//定義佇列結構
typedef struct queue
queue;
//建立佇列
queue initqueue()
//插入操作
queue insertqueue(queue q, char x)
else
return 0;
}//刪除操作
queue deletequeue(queue q)
else
return 0;
}
資料結構之佇列
八 佇列 鏈式佇列 鍊錶實現 隊尾 rear 隊首 front 靜態佇列 陣列實現 必須是迴圈佇列 需要幾個引數來確定,各引數含義 1 佇列初始化 front和rear值都是0 2 佇列非空 front代表佇列第乙個元素 rear代表佇列最後乙個元素的 下乙個元素 3 佇列空 front和rear相...
資料結構之佇列
與棧相反,佇列是一種先進先出的線性表,它只允許在表的一端進行,而在另一端刪除元 素。在佇列中,允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。1 鏈佇列 佇列的鏈式表示和實現 用鍊錶表示的佇列簡稱為鏈佇列,乙個鏈佇列顯然需要兩個分別指示對頭和隊尾的指標 分別稱為頭指 針和尾指標 才能唯一確定。這裡...
資料結構之佇列
一 佇列的介紹 佇列 queue 是一種線性儲存結構。它有以下幾個特點 1 佇列中資料是按照 先進先出 fifo,first in first out 方式進出佇列的。2 佇列只允許在 隊首 進行刪除操作,而在 隊尾 進行插入操作。佇列通常包括的兩種操作 入佇列 和 出佇列。1.佇列的示意圖 佇列中...