迴圈佇列的實現

2021-06-02 16:37:41 字數 1186 閱讀 3836

/*	佇列是一種先進先出的線性表,具有線性表的特性:分為鏈式佇列與順序佇列

順序佇列:用一段位址連續的儲存單元儲存資料元素,定義兩個游標:指向隊頭

的游標(front)、指向隊尾的游標(rear),如果front == rear隊列為空,如果

(rear + 1) % maxsize == front佇列滿(此為迴圈佇列),如普通佇列rear==maxsize佇列滿 */

#ifndef queue_h

#define queue_h

#define maxsize 20 //佇列的最大長度

typedef int elemtype; //佇列的資料型別

typedef structqueue;

void initqueue(queue *q); //初始化佇列

void enqueue(queue *q,elemtype e); //元素e進隊

void dequeue(queue *q,elemtype *e); //隊頭的元素出隊

bool isempty(queue *q); //判斷佇列是否為空

int getqueuelength(queue *q); //返回佇列的長度

void clear(queue *q); //清空佇列

void print(queue *q); //列印佇列

#endif //queue_h

#include "queue.h"

#include void initqueue(queue *q) //初始化佇列

void enqueue(queue *q,elemtype e) //讓元素e進隊

void dequeue(queue *q,elemtype *e) //隊頭的元素出隊存入*e

bool isempty(queue *q) //判斷佇列是否為空

int getqueuelength(queue *q) //返回佇列的長度

void clear(queue *q) //清空佇列

void print(queue *q) //列印佇列

else

}

#include "queue.h"

#include int main()

佇列 迴圈佇列的實現

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

迴圈佇列的實現

include include includeusing namespace std typedef int qelementtype typedef int status define error 0 define ok 1 define maxqsize 10 佇列的資料抽象 typedef s...

迴圈佇列的實現

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