佇列的順序儲存結構(迴圈佇列)(C語言實現)

2022-07-01 21:21:09 字數 1505 閱讀 6507

1 #include 2 #include 3

4#define ok 1

5#define err 2

6#define true 1

7#define false 0

8#define maxsize 4 //

定義佇列的最大長度

910 typedef int status; //

定義函式返回的狀態,ok & err

11 typedef char datatype; //

定義佇列中每個元素的資料型別,這裡暫定為字元型

1213 typedef struct

sequencequeue;

6364

/*函式原型,佇列的基本操作,與棧相同

*/65 sequencequeue *createsequencequeue(void

);66 status isempty(sequencequeue *l);

67void clear(sequencequeue *l);

68 datatype gettop(sequencequeue *l);

69int getlength(sequencequeue *l);

70 status push(sequencequeue *l, datatype node_to_push);

71 datatype pop(sequencequeue *l);

72void showqueue(sequencequeue *l);

7374

intmain()

102103 sequencequeue *createsequencequeue(void

)109 status isempty(sequencequeue *l)

115void clear(sequencequeue *l)

118 datatype gettop(sequencequeue *l)

122int getlength(sequencequeue *l)

125 status push(sequencequeue *l, datatype node_to_push)

132 datatype pop(sequencequeue *l)

139void showqueue(sequencequeue *l)

145}

146/*

147佇列的定義:只允許在一端進行插入,另一端進行刪除的線性表,也是一種操作受限的線性表

148一般,把允許插入的一端叫做隊尾,允許刪除的一端叫做隊頭

149不含任何元素的佇列就是空隊

150所以,佇列又稱先進先出(first in first out)的線性表

151*/

152/*

環境: code::blocks with gcc 5.1

*/

執行截圖:

佇列 順序儲存結構,迴圈佇列

為什麼小甲魚上節課說佇列的實現上我們更願意用鏈式儲存結構來儲存?我們先按照應有的思路來考慮下如何構造佇列的順序儲存結構,然後發掘都遇到了什麼麻煩。我們假設乙個佇列有n個元素,則順序儲存的佇列需建立乙個大於n的儲存單元,並把佇列的所有元素儲存在陣列的前n個單元,陣列下標為0的一端則是隊頭。no pic...

順序儲存結構的迴圈佇列

第一點 rear指向的是隊尾的下乙個元素 為了不讓rear此時指向的是front 會留個空 讓rear指向乙個空位 第二點 因為留了個空位 所以當你要插入k個元素的時候 你就要給這個順尋儲存結構陣列長度設為k 1 第三點 你在返回隊尾 計算長度等等進行加減運算 的時候都要記得取模 在返回rear的時...

佇列 迴圈佇列 的順序儲存實現

佇列的順序儲存實現 1 佇列 一端進,另一端出 佇列由兩個引數決定,front 頭 rear 尾 頭指標指向頭乙個元素,尾指標指向指向最後乙個元素的下一儲存單元 若陣列長度為n,當元素個數為n 1時就認為佇列已滿。r指向最後乙個空的元素空間。出隊 頭指標往上移動,入隊 尾指標向上移動,故 靜態佇列只...