隊列是壹種特殊的線性表,它只允許在表的前面刪除和在表的後面插入。插入操作的結尾稱為隊列的結尾,刪除操作的結尾稱為隊列的開頭。當隊列中沒有元素時,它被稱為空隊列。在隊列的數據結構中,第壹個插入的元素將被第壹個刪除;相反,最後插入的元素將被刪除,因此隊列也稱為FIFO的線性表—先進先出)。隊列為空的條件:前面=後面;隊列已滿的條件:rear = MAXSIZE隊列可以由數組Q【1…m】存儲,數組的上界m是隊列的最大允許容量。在隊列的操作中,需要設置兩個指針:head,隊列頭指針,它指向實際隊列頭元素的前壹個位置;尾部指針Tail指向實際尾部元素的位置。壹般來說,兩個指針的初始值都設置為0,隊列是空的,沒有任何元素。圖1(a)顯示了壹個由六個元素組成的隊列,數組定義為Q【1…10】。q(I)I = 3,4,5,6,7,8頭=2指針= 2,尾=8指針= 8。隊列中元素的數量是:L =尾-頭。要使頭部的元素出隊,需要將1加到頭指針。即head=head+1。此時,頭指針上移壹個位置並指向Q(3),表明Q(3)已出列。參見圖1(b)。如果妳想給壹個新元素排隊,妳需要把尾部指針上移壹個位置。即tail=tail+1。這時Q(9)進入隊伍,如圖1(c)所示。當隊列的尾部已經在頂部處理完,即tail=10時,如果要執行隊列操作,則會發生“溢出”,但隊列中實際上有三個空位置,因此這種溢出稱為“假溢出”。有兩種方法可以克服虛假溢出。壹種是將隊列中的所有元素移動到低地址區域,這顯然是浪費時間;另壹種方法是將數組存儲區域視為首尾相連的環形區域。當存儲在N地址中時,下壹個地址將“翻轉”為1。這種技術存儲的隊列稱為循環隊列。與堆棧壹樣,隊列只允許在斷點處插入和刪除元素。加入循環隊列的算法如下:1,tail = tail+1;2.如果tail=n+1,那麽tail = 1;3.如果head=tail的尾指針與頭指針重合,則表示該元素充滿了隊列,並處理溢出錯誤;4.否則,Q(tail)= X,並且結束(X是新的in-out元素)。隊列和堆棧壹樣,被廣泛使用。
特定在線搜索:
/view/38959.htm?fr=ala0_1_1