迴圈佇列的基本操作

2021-07-24 11:30:14 字數 996 閱讀 6931

一、迴圈佇列的基本概念。

佇列是線性表的一種,相對於棧的先進後出(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...