日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

理论基础 —— 队列

發布時間:2025/3/17 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理论基础 —— 队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【概述】

隊列(Queue)是一種特殊的線性表,是只能在一端插入在另一端刪除的特殊線性表。它按照先進先出的原則存儲數據,先進入的數據被壓入隊首,最后的數據在隊尾。

由于隊列滿足先進先出,后進后出的性質,因此也被稱為先進先出表(FIFO)或后進后出表(LILO)

當隊列中元素個數為零時稱為空隊列

【邏輯結構】

隊列是一種特殊的線性表,其允許插入(入隊)的一端稱為隊尾(tail),允許刪除(出隊)的一端稱為隊首(head)。?

當隊列滿時再插入元素,將發生上溢,當隊列為空時刪除元素,將發生下溢。

【隊列的順序存儲結構】

隊列可用數組來存儲,數組的下界為隊首位置,數組的上界為隊尾位置,在隊列的運算中需設置另兩個指針:隊首指針 head,指向隊首元素的前一個位置;隊尾指針 tail,指向隊尾元素所在位置,兩個指針初值設為 0,表示隊列為空。

當隊列經過一定的入隊、出隊操作后,隊列的低端存在一部分的空閑空間,而隊列的高端空間已被用盡,此時盡管數組中還有空間,但由于隊列的入隊操作只會插入到數組尾部,此時繼續入隊會發生假溢出

由于假溢出會造成極大的空間浪費,因此可以對其進行克服:

  • 將隊列中所有元素均向低地址區移動,但這樣十分浪費時間
  • 將存儲隊列的數組頭尾相接,當存放到 n 地址后,下一個地址就翻轉為 1

一般來說,隊列的順序存儲結構常采用第二種方法,即循環隊列

具體操作為對頭指針、尾指針進行取模:

  • rail=(rear+1) mod MAXSIZE
  • head=(front+1) mod MAZSIZE

【隊列的鏈式存儲結構】

隊列的鏈接存儲結構為鏈隊列,其利用單鏈表來實現隊列的鏈式存儲,隊首指針即為鏈表的頭指針。

由于其空間是動態擴展的,因此一般不存在上溢的問題,只有當內存沒有可用空間時才會出現隊列滿,但每個元素都需要一個指針域,從而產生了結構性開銷。

【實現】

  • 循環隊列:點擊這里
  • 鏈隊列:點擊這里
  • 總結

    以上是生活随笔為你收集整理的理论基础 —— 队列的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。