迴圈佇列的實現

2021-07-30 07:37:50 字數 766 閱讀 4827

#include#include#includeusing namespace std;

typedef int qelementtype;

typedef int status;

#define _error 0

#define _ok 1

#define maxqsize 10

//佇列的資料抽象

typedef struct

sqqueue;

//佇列初始化函式

status initqueue(sqqueue &q)

//判斷佇列是否為空

bool isempty(sqqueue q)

//判斷佇列是否已滿,這裡我們犧牲乙個空間,為什麼?***

bool isfull(sqqueue q)

//獲取佇列長度

int queuelength(sqqueue q)

//入佇列

status inqueue(sqqueue &q, qelementtype e)

//出佇列

status outqueue(sqqueue &q, qelementtype &e)//這裡是引用,不是取位址

//列印佇列中的元素

void printqueue(sqqueue q)

}//取隊頭元素

bool getfront(sqqueue &q, qelementtype &e)

int main()

佇列 迴圈佇列的實現

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

迴圈佇列的實現

佇列是一種先進先出的線性表,具有線性表的特性 分為鏈式佇列與順序佇列 順序佇列 用一段位址連續的儲存單元儲存資料元素,定義兩個游標 指向隊頭 的游標 front 指向隊尾的游標 rear 如果front rear隊列為空,如果 rear 1 maxsize front佇列滿 此為迴圈佇列 如普通佇列...

迴圈佇列的實現

正常使用佇列都是直接用一組位址連續的儲存單元依次存放,並用兩個指標front和rear指示佇列頭元素和佇列尾元素。但是如果只是這樣來存放佇列元素,容易引起陣列的越界而遭致 被破壞。這時我們可以臆造乙個環狀的空間,但是如果通過q.front q.rear方法是無法判斷佇列是為 空 還是 滿 所以我們需...