隊列的儲存及實現

來源:互聯網
上載者:User

       隊列(queue)是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。隊列是一種先進先出(FIFO)的線性表。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。


隊列也是線性表,同樣具有線性表的各種操作,只不過插入資料只能在隊尾進行,刪除資料只能在隊頭進行。


隊列的順序儲存結構:

front指標指向隊頭元素,rear指標指向隊尾元素的下一個位置。

假溢出的情況如下:


迴圈隊列的定義:我們把頭尾相接的順序儲存結構稱為迴圈隊列。

隊列為空白的條件     front==rear

隊列滿的條件是  (rear+1)%QueueSize==front

隊列的長度公式   (rear-front+QueueSize)%QueueSize



隊列的鏈式儲存結構

   其實就是線性表的單鏈表,只不過他只能尾進頭出而已,我們稱為鏈隊列。為了操作方便,我們將頭指標指向頭結點,而隊尾指標指向終端節點。


空隊列時front和rear都指向頭結點。


迴圈隊列與鏈隊列的比較,可以從兩方面來考慮。從時間上,他們都是常數時間O(1),不過迴圈隊列都是事先申請好空間,使用期間不釋放,而對於鏈隊列,每次申請和釋放結點也存在一些時間開銷,如果入隊和出對平凡,則兩者還是有細微差別。對於空間上來說,迴圈隊列必須有一個固定的長度,所以就有了儲存元素個數和空間浪費的問題。而隊列不存在這個問題,儘管他需要一個指標域,會產生一些空間上的開銷,但可以接受。










































聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.