資料結構之佇列總結

2021-10-17 10:55:18 字數 1587 閱讀 8935

佇列(queue)是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。

是一種先進先出(first in first out)的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。

迴圈佇列是把佇列頭尾相接的順序儲存結構

通用計算佇列長度的公式:

(rear - front + max_size) % queuesize

佇列滿的條件為:

(rear + 1) % queuesize == front

typedef int qelemtype;

typedef struct sqqueue;

status initqueue(sqqueue* q)

int queuelength(sqqueue q)

status enqueue(sqqueue* q, qelemtype e)

q->data[q->rear] = e; //將元素e賦值到隊尾

q->rear = (q->rear + 1) % max_size; //rear指標向後移動乙個位置,若到最後則轉到陣列頭部

return ok;

}

status dequeue(sqqueue *q, qelemtype *e)

*e = q->data[q->front]; //將隊頭元素賦值給e

q->front = (q->front + 1) % max_size; //front指標向後移動乙個位置,若到最後則轉至陣列頭部

return ok;

}

迴圈佇列存在著陣列溢位的風險。

佇列的鏈式儲存結構,其實就是線性表的單鏈表。也被稱為鏈佇列。

//結點結構

typedef struct qnode

qnode, *queueptr;

//佇列的鍊錶結構

typedef struct

linkqueue;

status enqueue(linkqueue *q, qelemtype e)

status dequeue(linkqueue *q, qelemtype *e)

p = q->front->next; //將欲刪除的隊頭結點存於p

*e = p->data; //將欲刪除的隊頭結點的值賦值給e

q->front->next = p->next; //將原隊頭結點後繼p->next賦值給頭結點後繼

if (q->rear == p) //若隊頭是隊尾,則刪除後將rear指向頭結點

q->rear = q->front;

free(p);

return ok;

}

資料結構 佇列總結

一.何為佇列?在資料結構中,在有序列表中資料的輸入輸出分別是由不同埠處理的,輸出端稱為前端,輸入端稱為後端,這樣會使得先進入的資料先被取出,即它具有先進先出的特性。二.佇列都分為那幾類?我們最常見的佇列有 順序佇列,迴圈佇列,鏈佇列以及雙向佇列 不過,我們除了必須掌握這幾種常見佇列也要對不常見的佇列...

資料結構 佇列總結

用順序和鏈式實現了線性表,這次要用順序和鏈式實現佇列了。佇列 只允許在一端進行插入操作,而另一端進行刪除操作的線性表。允許插入 入隊 進隊 的一端稱為隊尾,允許刪除 出隊 的一端稱為隊頭。佇列的操作特性 先進先出 順序佇列 佇列的順序儲存結構 假溢位 當元素被插入到陣列中下標最大的位置上之後,佇列的...

資料結構之佇列and棧總結分析

一 前言 資料結構中佇列和棧也是常見的兩個資料結構,佇列和棧在實際使用場景上也是相輔相成的,下面簡單總結一下,如有不對之處,多多指點交流,謝謝。二 佇列簡介 佇列顧名思義就是排隊的意思,根據我們的實際生活不難理解,排隊就是有先後順序,先到先得,其實在程式資料結構中的佇列其效果也是一樣,及先進先出。1...