迴圈佇列是佇列的順序儲存結構,將順序佇列臆造為乙個環狀空間,可較好的利用有限的空間,但是空間為靜態;同時,由於環狀的特殊,判滿和判空的條件需要區分,故在空間中額外留出乙個位置個尾指標,尾指標為最後乙個元素的下乙個空間,這樣當(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 入佇列 佇列有類似線性表的各種操作,不同的就是插入資料只能在隊尾進行,刪除資料只能在隊頭進行。線性表有線性儲存和鏈式儲存。棧是線性表,有這兩種儲存方...