1 . 佇列的基本概念
只允許在一端進行插入資料操作(隊尾),在另一端進行刪除資料操作(隊頭)的特殊線性表。佇列具有先進先出的特性。 2
. 佇列儲存結構
順序佇列:
隊頭指標不動----要大量搬移元素(出佇列時所有元素向前移動)
隊頭指標移動----存在假溢位
迴圈佇列
迴圈佇列如何解決佇列空或者滿?(三種方法)
a 少用乙個儲存空間(佇列空:front=rear.佇列滿:(rear+1)%size==front.)
b設定乙個標記位 :入佇列 flag置為1,出佇列flag置為0.當(flag==0)&&(front==rear)隊列為空,當(flag==1)&&(front==rear)隊列為滿。
c 設定乙個計數器,記錄佇列中元素的個數,當count==0時隊列為空,count==size時隊列為滿。
鏈式佇列---用鍊錶作為佇列的底層資料結構
實現鏈式佇列的以下操作:
typedef int datatype;
typedef struct node
node, *pnode;
typedef struct queue
queue;
// 佇列的初始化
void queueinit(queue* q);
// 入佇列
void queuepush(queue* q, datatype data);
// 出佇列
void queuepop(queue* q);
// 取隊頭元素
datatype queuefront(queue* q);
// 取隊尾元素
datatype queueback(queue* q);
// 獲取佇列中元素的個數
int queuesize(queue* q);
// 檢測佇列是否為空
int queueempty(queue* q);
下邊是實現**:
#include#include#include#define null 0
typedef int datatype;
typedef struct node
node, *pnode;
typedef struct queue
queue;
// 佇列的初始化
void queueinit(queue* q)
pnode buynode(datatype data)
temp->_data = data;
return temp;
}// 入佇列
void queuepush(queue* q, datatype data)
else
}// 出佇列
void queuepop(queue* q)
q->_phead = q->_phead->_pnext;
}// 取隊頭元素
datatype queuefront(queue* q)
return q->_phead->_data;
}// 取隊尾元素
datatype queueback(queue* q)
return q->_ptail->_data;
}// 獲取佇列中元素的個數
int queuesize(queue* q)
int count = 1;
pnode temp ;
temp = q->_phead;
while (temp!=q->_ptail)
return count;
}// 檢測佇列是否為空
int queueempty(queue* q)
return 0;
}
資料結構之佇列
八 佇列 鏈式佇列 鍊錶實現 隊尾 rear 隊首 front 靜態佇列 陣列實現 必須是迴圈佇列 需要幾個引數來確定,各引數含義 1 佇列初始化 front和rear值都是0 2 佇列非空 front代表佇列第乙個元素 rear代表佇列最後乙個元素的 下乙個元素 3 佇列空 front和rear相...
資料結構之佇列
與棧相反,佇列是一種先進先出的線性表,它只允許在表的一端進行,而在另一端刪除元 素。在佇列中,允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。1 鏈佇列 佇列的鏈式表示和實現 用鍊錶表示的佇列簡稱為鏈佇列,乙個鏈佇列顯然需要兩個分別指示對頭和隊尾的指標 分別稱為頭指 針和尾指標 才能唯一確定。這裡...
資料結構之佇列
一 佇列的介紹 佇列 queue 是一種線性儲存結構。它有以下幾個特點 1 佇列中資料是按照 先進先出 fifo,first in first out 方式進出佇列的。2 佇列只允許在 隊首 進行刪除操作,而在 隊尾 進行插入操作。佇列通常包括的兩種操作 入佇列 和 出佇列。1.佇列的示意圖 佇列中...