資料結構之迴圈佇列及其相關操作(c語言實現)

2021-09-26 06:20:42 字數 1294 閱讀 5601

迴圈佇列是佇列的順序儲存結構,將順序佇列臆造為乙個環狀空間,可較好的利用有限的空間,但是空間為靜態;同時,由於環狀的特殊,判滿和判空的條件需要區分,故在空間中額外留出乙個位置個尾指標,尾指標為最後乙個元素的下乙個空間,這樣當(rear==front)時即為空佇列,當(rear+1)%max_size == front時即為隊滿(想象環形空間有助於理解…),最後,由於迴圈的佇列的週期性,時刻要注意空間移動時要取餘最大空間防止位置超出空間。

#include#include#include#define max_size 100

#define overflow -1

#define error 0

#define ok 1

typedef struct circle_queue;

//注意:當隊列為空時兩變數指向同一位置,但非空時rear為最後乙個元素的下乙個位置,以此區分迴圈佇列滿或空;

//判空條件:(front==rear);

//判滿條件:((rear+1)%max_size==front);

int init_queue(circle_queue &que)//初始化;

que.front=que.rear=0;

return ok;

}int get_length(circle_queue que)//返回佇列長度;

int enter_queue(circle_queue &que,int e)//入隊;

que.base[que.rear]=e;//在rear處動態開闢的空間中賦值e;

que.rear=(que.rear+1)%max_size;//迴圈空間一定要記得時刻取餘最大空間,否則可能溢位空間;

return ok;

}int quit_queue(circle_queue &que,int &e)//出隊;

e=que.base[que.front];//用變數e值傳引返回出隊元素的值;

que.front=(que.front+1)%max_size;

return ok;

}bool is_empty(circle_queue que)//判空;

bool is_full(circle_queue que)//判滿;

int get_element(circle_queue que)//遍歷所有元素;

int now=que.front;

while(now!=que.rear)

printf("\n");

return ok;

}int main()

資料結構 順序迴圈佇列的相關操作

佇列是一種先進先出的資料儲存結構,一般作業系統中用的比較多,本文主要介紹對順序佇列的入佇列,出佇列,遍歷佇列操作。定義順序佇列 我們可以用乙個陣列來表示乙個順序儲存結構,兩個整數來分別指向陣列的下標,表示佇列的頭指標和尾指標 typedef struct queue queue 定義佇列之後首先就是...

資料結構之迴圈佇列

資料結構之佇列 迴圈佇列 ide vs2010 佇列操作 初始化 入隊 插入隊尾 出隊 即取隊頭 判斷佇列是否非空 滿 include using namespace std define max len 100 定義節點型別 typedef struct queue queue 初始化 void ...

資料結構之迴圈佇列

4.10 佇列的定義 佇列定義 一種先進先出的線性表。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。隊頭 隊尾 出佇列 a1 a2 a3 a4 an 入佇列 佇列有類似線性表的各種操作,不同的就是插入資料只能在隊尾進行,刪除資料只能在隊頭進行。線性表有線性儲存和鏈式儲存。棧是線性表,有這兩種儲存方...