佇列的操作與實現 迴圈佇列

2021-09-27 02:40:24 字數 2037 閱讀 1382

由於順序佇列有「假溢位」的缺點,所以在應用中,運用更多的是迴圈佇列來實現佇列的順序儲存

(由於引用傳引數,所以原始檔需要.cpp字尾,即c++檔案儲存。)

迴圈佇列的判空條件為:q.rear == q.fornt;

迴圈佇列的判讀隊滿的條件是:(q.rear + 1) % maxsize == q.fornt;

下面是佇列實現的儲存型別結構體:

#define maxsize 50

typedef

int elemtype;

typedef

struct

sqqueue;

下面是對佇列的一些基本操作:

void

initqueue

(sqqueue &q)

;bool isempty

(sqqueue &q)

;bool enqueue

(sqqueue &q, elemtype e)

;//進隊

bool dequeue

(sqqueue &q, elemtype &e)

;//出隊

bool gethead

(sqqueue q, elemtype &e)

;//獲取頭元素

下面是乙個測試主方法:

int

main()

gethead

(squeue, s)

;printf

("隊頭元素為:%d \n"

, s)

;printf

("隊所有元素為:");

while

(squeue.rear != squeue.fornt)

return0;

}

執行結果如下:

完整的源程式如下:

#include

"stdio.h"

#include

"stdlib.h"

#define maxsize 50

typedef

int elemtype;

typedef

struct

sqqueue;

void

initqueue

(sqqueue &q)

;bool isempty

(sqqueue &q)

;bool enqueue

(sqqueue &q, elemtype e)

;//進隊

bool dequeue

(sqqueue &q, elemtype &e)

;//出隊

bool gethead

(sqqueue q, elemtype &e)

;//獲取頭元素

intmain()

gethead

(squeue, s)

;printf

("隊頭元素為:%d \n"

, s)

;printf

("隊所有元素為:");

while

(squeue.rear != squeue.fornt)

return0;

}void

initqueue

(sqqueue &q)

bool isempty

(sqqueue &q)

bool enqueue

(sqqueue &q, elemtype e)

bool dequeue

(sqqueue &q, elemtype &e)

bool gethead

(sqqueue q, elemtype &e)

迴圈佇列操作實現

該實現front始終指向當前的頭結點,rear始終指向尾結點的 下乙個結點 include include define maxnum 10 define datatype int typedef struct queue queue void initqueue queue p int empty...

佇列 迴圈佇列的實現

為了可以重新利用佇列底層陣列中已刪除元素所佔的空間,消除可能出現的 假滿 現象,將順序佇列改進為迴圈佇列。迴圈佇列是首尾相連的佇列 當front rear變數達到底層陣列的capacity 1之後,再向前以為就變成0.入隊 1 判斷佇列是否已滿,已滿丟擲越界異常 2 不滿的話把元素查到隊尾,並且re...

普通佇列與迴圈佇列的概念與實現

author 田源 date 2021 03 12 19 26 description 普通佇列實現 入隊操作 push x this arr this tail x this tail 1 出隊操作 pop this head 1 佇列是否為空 isempty 佇列是否滿了 isfull 獲取隊首...