佇列(queue):具有一定操作約束的線性表
插入和刪除操作:只能在一端插入,而在另一端刪除。
先來先服務
先進先出:fifo
型別名稱:佇列(queue)
資料物件集:乙個有0個或多個元素的有窮線性表。
操作集:長度為maxsize的佇列q∈queue,佇列元素item c elementtype
1、queue creatqueue( int maxsize ):生成長度為maxsize的空佇列;
2、int isfullq( queue q, int maxsize ):判斷佇列q是否已滿;
3、void addq( queue q,elementtype item ):將資料元素item插入佇列q中;
4、int isemptyq( queue q ):判斷佇列q是否為空;
5、elementtype deleteq( qucue q):將隊頭資料元素從佇列中刪除並返回。
佇列的順序儲存結構通常由乙個一維陣列和乙個記錄佇列頭元素位置的變數front 以及乙個記錄佇列尾元素位置的變數rear組成。
1 #include 2 #include 3view code#define elementtype int
4#define maxsize 4
5 typedef struct qnode*queue;
6struct
qnode7;
12queue createqueue()
1319
//判斷佇列是否滿
20int
isfull(queue q)
2124
void
addq(elementtype item,queue ptrq)
2532
//新增元素
33 ptrq->rear = (ptrq->rear + 1) %maxsize;
34 ptrq->data[ptrq->rear] =item;35}
36//
判斷佇列是否空
37int
isempty(queue q)
3841
//出隊
42elementtype deleteq(queue ptrq)
4350 ptrq->front = (ptrq->front + 1) %maxsize;
51return ptrq->data[ptrq->front];
52 }
佇列的鏈式儲存結構也可以用乙個單鏈表來實現。插入和刪除操作分別在鍊錶二頭進行。
現在有乙個問題,front 【頭指標,刪除元素】和 rear【尾指標,新增元素】 分別指向鍊錶哪一頭?
肯定是front 放在鍊錶前【便於刪除】,rear放在鍊錶後【這個無論表頭、表尾都可以】
1 #include 2 #include 3view code#define elementtype int
4 typedef struct qnode*queue;
5struct
node6;
11struct
qnode12;
16queue createqueue()
1722
//佇列是否空
23int
isempty(queue queue)
2428
//入隊
29void
addq(elementtype item, queue queue)
3041
else
//若佇列不為空
4246}47
//出隊
48elementtype deleteq(queue queue)
4956
struct node*frontcell;
57elementtype item;
58 frontcell = queue->front;
59if(queue->front == queue->rear) //
說明佇列只有乙個元素
6063
else
6467 item = frontcell->data;
68free
(frontcell);
69return
item;
70 }
資料結構之佇列
八 佇列 鏈式佇列 鍊錶實現 隊尾 rear 隊首 front 靜態佇列 陣列實現 必須是迴圈佇列 需要幾個引數來確定,各引數含義 1 佇列初始化 front和rear值都是0 2 佇列非空 front代表佇列第乙個元素 rear代表佇列最後乙個元素的 下乙個元素 3 佇列空 front和rear相...
資料結構之佇列
與棧相反,佇列是一種先進先出的線性表,它只允許在表的一端進行,而在另一端刪除元 素。在佇列中,允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。1 鏈佇列 佇列的鏈式表示和實現 用鍊錶表示的佇列簡稱為鏈佇列,乙個鏈佇列顯然需要兩個分別指示對頭和隊尾的指標 分別稱為頭指 針和尾指標 才能唯一確定。這裡...
資料結構之佇列
一 佇列的介紹 佇列 queue 是一種線性儲存結構。它有以下幾個特點 1 佇列中資料是按照 先進先出 fifo,first in first out 方式進出佇列的。2 佇列只允許在 隊首 進行刪除操作,而在 隊尾 進行插入操作。佇列通常包括的兩種操作 入佇列 和 出佇列。1.佇列的示意圖 佇列中...