資料結構 迴圈佇列的順序儲存結構

2021-09-26 09:39:39 字數 2207 閱讀 2179

佇列只允許在隊尾插入,在隊頭刪除

迴圈佇列防止假溢位現象

順序儲存結構用陣列實現

#include using namespace std;

#define ok 1

#define error 0

#define maxsize 6

typedef int elemtype;

typedef int status;

/* 定義順序儲存結構的迴圈佇列:sqqueue(迴圈佇列防止假溢位)

* 思路:

* 1、用陣列實現

* 2、頭指標front指向隊頭元素的下標

* 3、尾指標rear指向隊尾元素下乙個位置的下標

*/typedef struct

sqqueue;

/* 迴圈佇列的初始化:initqueue

* 思路:

* 1、頭指標和尾指標指向的下標位置均為0

*/status initqueue(sqqueue *q)

/* 迴圈佇列求佇列長度:queuelength

* 思路:

* 1、佇列滿的條件是:(rear+1)%maxsize==front

* 2、規定:陣列中只有乙個空閒單元時3,規定已滿

* 3、當rear>front時,長度為:rear-front,

* 4、當rearrear + 1) % maxsize == q->front)

q->data[q->rear] = e;

q->rear = (q->rear + 1) % maxsize;

return ok;

}/* 迴圈佇列的出隊:只在隊頭出隊:dequeue,返回元素為e

* 思路:

* 1、判斷佇列是否空,空的條件是front==rear

* 2、將隊頭元素返回e:e=data[front];

* 3、將頭指標front後移一位,若到陣列最後則移到陣列頭部,即:front=(front+1)%maxsize

*/status dequeue(sqqueue *q, elemtype *e)

*e = q->data[q->front];

q->front = (q->front + 1) % maxsize;

return ok;

}/* 輸出佇列函式:prinftqueue

* 思路:

* 1、判斷佇列是否為空

* 2、由於陣列中始終有乙個空閒單元,所以front!=rear

* 3、當rear>front時,按下標從front到rear-1輸出

* 4、當rearrear == q->front)

if (q->rear > q->front) }

else

for (i = 0; i < q->rear ; i++)

}return ok;

}int main()

cout << "輸出佇列:";

prinftqueue(&q);

cout << endl;

int length;

cout << "輸出佇列長度:";

length = queuelength(q);

cout << length << endl;

cout << "輸入出隊元素個數:";

cin >> l;

cout << "輸出出隊元素:";

for (j = 0; j < l; j++)

cout << endl;

cout << "輸出佇列:";

prinftqueue(&q);

cout << endl;

cout << "輸出佇列長度:";

length = queuelength(q);

cout << length << endl;

cout << "輸入入隊元素個數:";

cin >> n;

cout << "依次入隊元素:";

for (j = 0; j < n; j++)

cout << "輸出佇列:";

prinftqueue(&q);

cout << endl;

cout << "輸出佇列長度:";

length = queuelength(q);

cout << length << endl;

return 0;

}

資料結構 迴圈佇列的順序儲存結構

專案整體源 佇列是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出 first in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。線性表有順序儲存和鏈式儲存,棧是線性表,所以也有這兩種儲存方式。同樣,佇列作為一種特殊的線性表...

資料結構 環形佇列 迴圈佇列 順序儲存

佇列是對頭出 隊尾入的先進先出線性表。需要兩個指標front和rear分別來指向隊頭和隊尾。front指向隊頭元素的前乙個位置,rear總是指向隊尾元素。進隊 rear 1 出隊 front 1 隊空條件 front rear 隊滿條件 rear maxsize 1 但是這樣會出現假溢位的情況,因為...

資料結構 非迴圈佇列 順序儲存

佇列是對頭出 隊尾入的先進先出線性表。需要兩個指標front和rear分別來指向隊頭和隊尾。front指向隊頭元素的前乙個位置,rear總是指向隊尾元素。進隊 rear 1 出隊 front 1 隊空條件 front rear 隊滿條件 rear maxsize 1 include include ...