佇列是一種操作受限的線性表,和棧的一端不允許操作不同,佇列的兩端都可進行操作,而且只能是一端進(插入操作),另一端出(刪除操作)
。進行插入操作的一端稱為隊尾,進行刪除操作的一端稱為隊首或隊頭。新元素
進隊後便成為新的隊尾元素(棧的新元素進入則是棧頂元素),元素
出隊後,其後繼元素成為新的隊首元素。
所以,佇列又稱為先進先出表。
採用順序儲存結構的佇列稱為
順序隊。
隊空的條件為q->front = q->rear,進隊時隊尾指標rear加1,隊滿時q->rear == max-1(存放元素陣列的最大下標)
#include #include using namespace std;
#define maxsize 50
typedef int elemtype;
typedef struct
sqqueue; //順序隊型別
/*****初始化佇列*****/
void initqueue(sqqueue * &q)
/*****銷毀佇列*****/
void destroyqueue(sqqueue * &q)
/*****判斷佇列是否為空*****/
bool queueempty(sqqueue *q)
/*****進佇列*****/
bool enqueue(sqqueue * &q,elemtype e)
/*****出佇列*****/
bool dequeue(sqqueue * &q,elemtype &e)
int main()
---**和部分內容參考自《資料結構教程》 資料結構模板之七 環形隊
相比順序隊,環形隊不會出現假溢位的現象 由於每次進隊操作時隊尾指標rear增1,而每次出隊時頭指標front也是增1,順序隊中的front與rear一直在逼近maxsize,當rear maxsize 1時,此時 隊滿 無法再進隊,但實際上佇列裡仍然有空位置 若把存放資料的陣列 首尾相連 將它視作一...
資料結構模板 棧
此部落格是存的是我自己編寫的棧模板,如有錯誤請指出棧是操作受限的線性表,只允許在棧頂進行插入和刪除操作,遵循 後進先出 原則。include include define elemtype int define maxsize 1000 using namespace std 這是順序棧的模板 ty...
資料結構模板 佇列
此部落格是存的是我自己編寫的佇列模板,如有錯誤請指出佇列是操作受限的線性表,只允許在隊頭進行刪除操作,在隊尾進行插入操作,遵循 先進先出 原則。順序隊 存在假溢位問題 include include define elemtype int define maxsize 1000 using name...