一、迴圈佇列的基本概念。
佇列是線性表的一種,相對於棧的先進後出(filo),佇列是先進先出的(fifo),因此只能在一端輸入(隊尾rear),在另一端輸出(隊頭front)。
順序佇列的隊頭指向當前佇列第乙個元素的位置,隊尾指向當前元素的下乙個位置的下乙個位置,但是當隊滿時不能入棧,
•存在問題
設陣列長度為m,則:
–當front=0,rear=m時,再有元素入隊發生溢位——
真溢位
–當front!=0,rear=m時,再有元素入隊發生溢位——
假溢位•解決方案
–隊首固定,每次出隊剩餘元素向下移動——浪費時間
–迴圈佇列
»基本思想:把佇列
設想成環形,讓sq[0]接在sq[m-1]之後,若rear+1==m,則令rear=0;
佇列的空間利用率不高,為了解決這個問題,採用迴圈佇列,迴圈佇列對空的條件是 rear==front,隊滿的條件是(rear+1)%size = front(這樣會浪費乙個空間)。
二、迴圈佇列的原始碼
/*迴圈佇列的操作:
1、初始化佇列
2、入隊
3、出隊
*/#include #include #include #define size 5
struct que;
int init_queue(struct que* q)
int in_queue(struct que* q, int data)
else
}int out_queue(struct que* q)
else
}int main()
迴圈佇列基本操作
include include include include define ok 1 define error 0 define maxsize 4 分配的最大空間 typedef struct que queuelink int initloopqueue queuelink 初始化迴圈佇列 i...
迴圈佇列的基本操作實現
front 指向隊頭元素的前乙個單元 rear 指向隊尾元素 maxsize 陣列的最大長度 元素入隊的時候,將隊尾的指標加1,然後元素入隊 元素出隊時,先將對頭指標加1,然後元素出隊。隊頭指標進1 front front 1 maxsize 隊尾指標進1 rear rear 1 maxsize 在...
順序迴圈佇列的基本操作
名稱 順序迴圈佇列的基本操作 說明 此處說明以下有關順序迴圈佇列的判斷空,判斷滿的問題。此處採用的是少用乙個儲存元素。此外,還可以採用增加乙個標誌位tag,即指示fro rear是因為空還是因為滿。還有可以增加乙個q.size屬性來判斷是否達到空或者滿的狀態。順序佇列的儲存結構 typedef st...