大話資料結構筆記 迴圈佇列及佇列的鏈式儲存

2021-10-02 21:15:23 字數 1108 閱讀 3916

#define maxsize 20

typedef struct

sqqueue;

佇列滿的條件是:

(rear+1)%queuesize == front;

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

(rear-front+queuesize)%queuesize;

//初始化乙個空佇列q

int initqueue(sqqueue *q)

//返回q的元素個數,也就是佇列的當前長度

int queuelength(sqqueue q)

//若佇列未滿,則插入元素e為q新的隊尾元素

intenqueue

(sqqueue *q,

int e)

//若佇列不為空,則刪除q中隊頭元素,用e返回其值

intdequeue

(sqqueue *q,

int*e)

佇列的鏈式儲存結構,起始就是線性表的單鏈表,只不過它只能尾進頭出而已,我們把它簡稱為鏈佇列。隊頭指標指向鏈佇列的頭結點,隊尾指標指向終端結點。空佇列時,front和rear都指向頭結點。

typedef

struct qnode //結點結構

qnode,

*queueptr;

typedef

struct

//佇列的鍊錶結構

linkqueue;

//插入元素e為q的新的隊尾元素

intenqueue

(linkqueue *q,

int e)

//若佇列不空,刪除q的隊頭元素,用e返回其值,並返回1,否則返回0

intdequeue

(linkqueue *q,

int*e)

在可以確定佇列長度最大值的情況下,建議用迴圈佇列,如果無法預估佇列的長度,就用鏈佇列。

大話資料結構 迴圈佇列 2020 6 28

佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出的線性表,簡稱fifo first in first out 允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。佇列順序儲存結構的不足 入隊操作時間複雜度為o 1 出隊操作時間複雜度為o n 因此,使用迴圈...

大話資料結構 佇列

佇列 queue 只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。fifo結構 adt 佇列 queue data operation initqueue q 初始化操作,建立乙個空佇列q。destroyqueue q 若佇列q存在,則銷毀它。clearqueue q 將佇列q清空。que...

大話資料結構 佇列

佇列是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。佇列的抽象資料型別 adt 佇列 queue data 同線性表。元素具有相同的型別,相鄰元素具有前驅和後繼的關係。operation initq...