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

2021-09-06 08:36:34 字數 2774 閱讀 7222

佇列是一種先進先出的資料儲存結構,一般作業系統中用的比較多,本文主要介紹對順序佇列的入佇列,出佇列,遍歷佇列操作。

定義順序佇列:

我們可以用乙個陣列來表示乙個順序儲存結構,兩個整數來分別指向陣列的下標,表示佇列的頭指標和尾指標;

typedef struct

queue

queue;

定義佇列之後首先就是初始化佇列:

初始化佇列的時候佇列一定是空的,佇列的頭指標和尾指標必須指向陣列的首端;

queue *init()

定義佇列的儲存結構並且初始化佇列之後,接下來就要入佇列了。

在入佇列的時候需要注意幾個問題;

①:入佇列是必須判斷佇列是否已滿,可以用乙個數學公式來判斷:(h->rear + 1) % max == h->front 如果該表示式為true,說明佇列已滿;

②:把此佇列設定成迴圈佇列,即當h->rear走到陣列末端的時候,必須考慮把h->rear指向陣列的首端(0);【入佇列移動的是佇列的尾指標】

③:連續入佇列的時候必須在入佇列之後檢查佇列是否已滿;

我們有了這些規則之後就可以進行編碼了:

void insert(queue *h)        //

插入佇列

else

while(ch != '

y' && ch != '

y' && ch != '

n' && ch != 'n'

); }

}while(ch == '

y' || ch == 'y'

); }

}

出佇列需要注意的問題:

①:判斷佇列是否為空;我們認為當頭指標等於尾指標是隊列為空;

②:當佇列的頭指標走到陣列尾部是需要改變頭指標指向陣列頭部;【出佇列只改變頭指標的位置】

③:連續出佇列的時候必須在出佇列之後檢查佇列是否為空;

void del(queue *h)        //

出佇列

else

while(ch != '

y' && ch != '

y' && ch != '

n' && ch != 'n'

); }

}while(ch == '

y' || ch == 'y'

); }

}

遍歷佇列:

void bianli(queue *h)        //

遍歷佇列中的元素}}

完整的**如下:【**粘不上了,只能這樣了】

1 #include2 #include3

4#define max 5

56 typedef struct

queue

7queue;

1213 queue *h; //

佇列頭結點

1415

16 queue *init()

1724

2526

27int get_int() //

得到整型

2836

while((ch = getchar()) != '

\n'); //

擷取多餘的字串

37return

input;

3839}40

41char get_first() //

得到第乙個字元

4249

50int menu() //

選擇選單

5164

return

result;65}

6667

void insert(queue *h) //

插入佇列

6891

else

92while(ch != '

y' && ch != '

y' && ch != '

n' && ch != 'n'

);98}99

100 }while(ch == '

y' || ch == 'y'

);101

}102

103}

104105

void bianli(queue *h) //

遍歷佇列中的元素

106

119}

120}

121122

void del(queue *h) //

出佇列123

146else

147while(ch != '

y' && ch != '

y' && ch != '

n' && ch != 'n'

);153

}154 }while(ch == '

y' || ch == 'y'

);155

}156

}157

158int main(void

)159

170do

171while(ch != '

y' && ch != '

y' && ch != '

n' && ch != 'n'

);175 }while(ch == '

y' || ch == 'y'

);176

177 }

資料結構 迴圈佇列的順序儲存結構

專案整體源 佇列是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出 first in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。線性表有順序儲存和鏈式儲存,棧是線性表,所以也有這兩種儲存方式。同樣,佇列作為一種特殊的線性表...

資料結構 迴圈佇列的順序儲存結構

佇列只允許在隊尾插入,在隊頭刪除 迴圈佇列防止假溢位現象 順序儲存結構用陣列實現 include using namespace std define ok 1 define error 0 define maxsize 6 typedef int elemtype typedef int stat...

資料結構 佇列 順序佇列 迴圈佇列 鏈佇列)

前言 一 佇列的定義 二 佇列的順序儲存結構 1.順序佇列的定義 2.迴圈佇列定義 3.迴圈佇列的基本操作 三 佇列的鏈式儲存結構 1.鏈佇列的定義 2.鏈佇列的基本操作 佇列也是一種線性表,其特殊性在於佇列的基本操作是線性表的子集。佇列按 先進先出 的規則進行操作,故稱其為操作受限的線性表。佇列 ...