C 迴圈佇列的基礎操作

2021-10-01 04:10:17 字數 1364 閱讀 4089

佇列是一種線性表,只允許在一端輸出,另一端輸入,也就是「先進先出」。迴圈佇列則可以非常靈活的輸入輸出。

#define maxsize 5

struct my_queue

;

其中,front是頭位置,rear是尾位置,本程式採用如下的資料結構:

該資料結構可以更加方便的判斷佇列是否滿了

int queue_length(my_queue *q1)

void show_queue(my_queue *q1)

my_queue *enter_queue(my_queue *q1, int en_number)

else }

my_queue *delete_queue(my_queue *q1, int delete_num)

else if(delete_num > queue_length(q1))

else

}

其中,非常巧妙的乙個迴圈自增方法:q1->rear = (q1->rear + 1) % maxsize

當我以後要用到迴圈自增時,可以採用這種寫法

和之前的程式類似,struct定義的是一種資料型別,所以返回值為struct定義的資料型別時,在函式宣告時也要用struct定義的資料型別

#include #include "queue.hpp"

using namespace std;

int main(int argc, char const *ar**)

; int length = 0;

my_queue *q1;

q1 = new my_queue;

length = queue_length(q1);

cout << "初始化後的佇列長為:" << length << endl;

for(int i = 0; i < 4; i++)

show_queue(q1);

length = queue_length(q1);

cout << "插入後的佇列長為:" << length << endl;

q1 = enter_queue(q1, data[1]); //佇列滿了無法插入了

q1 = delete_queue(q1, 3);

show_queue(q1);

return 0;

}

同樣,將要定義的佇列指定為乙個指標,並為他new乙個空

迴圈佇列的基礎操作(C )

include iostream include linkqueue.h using namespace std 佇列 先進先出 只允許在隊尾進行插入操作,而在隊頭進行刪除操作的線性表 迴圈佇列 頭尾相接 佇列 陣列 兩個指標 const int maxsize 20 struct sqqueue ...

迴圈佇列的操作

佇列是一種操作受限的線性表,特點是 先進先出 其限制在於允許在表的一端進行插入,稱之為隊尾 rear 新元素進隊稱為進隊 在表的另一端進行刪除隊頭 front 從佇列中刪除元素稱為出隊。而順序隊作為佇列的一種儲存方式,常被運用,但是為了解決順序佇列的 假溢位 現象 順序隊中,是引入兩個指標,且兩個指...

迴圈佇列的操作

佇列和鍊錶 堆疊一樣都是一種線性結構。只不過佇列的操作限定在兩端,只能夠在隊頭和隊尾進行操作。它的特性是先進先出,在隊尾進隊頭出。佇列的物理結構包括順序儲存結構和鏈式儲存結構,也就是我們常說的順序佇列和鏈式佇列。這裡就說一下順序佇列,順序儲存結構要預先分配記憶體,最好能知道佇列的最大長度,在順序佇列...