佇列是一種先進先出的線性表,允許插入的一端稱為隊尾,允許刪除的一方叫做隊頭。
佇列和棧一樣,有自己的規則,使用佇列儲存資料時,只允許從一端進行插入,另一端進行刪除。需要遵循「先進先出」的規則。 按照以往的做法,頭指標都在下標0的位置,那也就意味著,佇列的所有元素都要向前挪動,以保證佇列的隊頭,可是有時想想,為什麼出佇列一定要全部 移動呢?如果不去限制元素必須儲存在陣列的前n個單位這一條件,效能會大大提公升,也就是說隊頭不一定要在下標0的位置。當rear==front 的時候 佇列是空的,(rear+1)%max == front 的時候佇列就是滿的。
進佇列
#include
#include
intenqueue
(int *a,int front,int rear,int data,int max)
//max 佇列的大小
a[rear%max] = data;//將rear指標向後移動一位
rear++;
return rear;
}複製**
出佇列int
dequeue
(int *a,int front,int rear,int max)
printf("%d", a[front]);
front = (front + 1)% max;//將front指標向後移一位
return front;
}複製**
應用int
main
()複製**
執行結果 佇列順序儲存
ifndef status h define status h define ok 1 define error 0 define false 1 define true 1 typedef int elemtype typedef int status endif ifndef stack h d...
佇列 順序儲存結構,迴圈佇列
為什麼小甲魚上節課說佇列的實現上我們更願意用鏈式儲存結構來儲存?我們先按照應有的思路來考慮下如何構造佇列的順序儲存結構,然後發掘都遇到了什麼麻煩。我們假設乙個佇列有n個元素,則順序儲存的佇列需建立乙個大於n的儲存單元,並把佇列的所有元素儲存在陣列的前n個單元,陣列下標為0的一端則是隊頭。no pic...
關於順序儲存結構佇列
佇列是一種先進先出的線性表 fifo 出佇列的那一端叫做隊頭,入佇列的那一端叫做隊尾。作為線性表,同樣也有各種埠操作,不同的是插入資料只能在隊尾進行,刪除資料只能在隊頭進行。同棧,佇列也有兩儲存方式,先來看看順序佇列。順序隊列入隊方式很簡單,就是在隊尾追加乙個元素,不需要移動任何元素。而出隊方式就只...