隊(duì)列

簡(jiǎn)介:

隊(duì)列是一種特殊的線(xiàn)性表舆吮,特殊之處在于它只允許在表的前端(front)進(jìn)行刪除操作红淡,而在表的后端(rear)進(jìn)行插入操作,和棧一樣猪半,隊(duì)列是一種操作受限制的線(xiàn)性表兔朦。進(jìn)行插入操作的端稱(chēng)為隊(duì)尾,進(jìn)行刪除操作的端稱(chēng)為隊(duì)頭磨确。隊(duì)列中沒(méi)有元素時(shí)沽甥,稱(chēng)為空隊(duì)列。

隊(duì)列的數(shù)據(jù)元素又稱(chēng)為隊(duì)列元素乏奥。在隊(duì)列中插入一個(gè)隊(duì)列元素稱(chēng)為入隊(duì)摆舟,從隊(duì)列中刪除一個(gè)隊(duì)列元素稱(chēng)為出隊(duì)。因?yàn)殛?duì)列只允許在一端插入邓了,在另一端刪除恨诱,所以只有最早進(jìn)入隊(duì)列的元素才能最先從隊(duì)列中刪除,故隊(duì)列又稱(chēng)為先進(jìn)先出(FIFO—first in first out)線(xiàn)性表骗炉。

順序隊(duì)列

建立順序隊(duì)列結(jié)構(gòu)必須為其靜態(tài)分配或動(dòng)態(tài)申請(qǐng)一片連續(xù)的存儲(chǔ)空間照宝,并設(shè)置兩個(gè)指針進(jìn)行管理。一個(gè)是隊(duì)頭指針front句葵,它指向隊(duì)頭元素硫豆;另一個(gè)是隊(duì)尾指針rear龙巨,它指向下一個(gè)入隊(duì)元素的存儲(chǔ)位置,如圖所示

每次在隊(duì)尾插入一個(gè)元素是熊响,rear增1旨别;每次在隊(duì)頭刪除一個(gè)元素時(shí),front增1汗茄。隨著插入和刪除操作的進(jìn)行秸弛,隊(duì)列元素的個(gè)數(shù)不斷變化,隊(duì)列所占的存儲(chǔ)空間也在為隊(duì)列結(jié)構(gòu)所分配的連續(xù)空間中移動(dòng)洪碳。當(dāng)front=rear時(shí)递览,隊(duì)列中沒(méi)有任何元素,稱(chēng)為空隊(duì)列瞳腌。當(dāng)rear增加到指向分配的連續(xù)空間之外時(shí)绞铃,隊(duì)列無(wú)法再插入新元素,但這時(shí)往往還有大量可用空間未被占用嫂侍,這些空間是已經(jīng)出隊(duì)的隊(duì)列元素曾經(jīng)占用過(guò)得存儲(chǔ)單元儿捧。

順序隊(duì)列中的溢出現(xiàn)象:

(1) "下溢"現(xiàn)象:當(dāng)隊(duì)列為空時(shí),做出隊(duì)運(yùn)算產(chǎn)生的溢出現(xiàn)象挑宠》贫埽“下溢”是正常現(xiàn)象各淀,常用作程序控制轉(zhuǎn)移的條件懒鉴。

(2)"真上溢"現(xiàn)象:當(dāng)隊(duì)列滿(mǎn)時(shí),做進(jìn)棧運(yùn)算產(chǎn)生空間溢出的現(xiàn)象碎浇×倨祝“真上溢”是一種出錯(cuò)狀態(tài),應(yīng)設(shè)法避免奴璃。

(3)"假上溢"現(xiàn)象:由于入隊(duì)和出隊(duì)操作中吴裤,頭尾指針只增加不減小,致使被刪元素的空間永遠(yuǎn)無(wú)法重新利用溺健。當(dāng)隊(duì)列中實(shí)際的元素個(gè)數(shù)遠(yuǎn)遠(yuǎn)小于向量空間的規(guī)模時(shí)麦牺,也可能由于尾指針已超越向量空間的上界而不能做入隊(duì)操作。該現(xiàn)象稱(chēng)為"假上溢"現(xiàn)象鞭缭。

循環(huán)隊(duì)列

在實(shí)際使用隊(duì)列時(shí)剖膳,為了使隊(duì)列空間能重復(fù)使用,往往對(duì)隊(duì)列的使用方法稍加改進(jìn):無(wú)論插入或刪除岭辣,一旦rear指針增1或front指針增1 時(shí)超出了所分配的隊(duì)列空間吱晒,就讓它指向這片連續(xù)空間的起始位置。自己真從MaxSize-1增1變到0沦童,可用取余運(yùn)算rear%MaxSize和front%MaxSize來(lái)實(shí)現(xiàn)仑濒。這實(shí)際上是把隊(duì)列空間想象成一個(gè)環(huán)形空間叹话,環(huán)形空間中的存儲(chǔ)單元循環(huán)使用,用這種方法管理的隊(duì)列也就稱(chēng)為循環(huán)隊(duì)列墩瞳。除了一些簡(jiǎn)單應(yīng)用之外驼壶,真正實(shí)用的隊(duì)列是循環(huán)隊(duì)列。[2]

在循環(huán)隊(duì)列中喉酌,當(dāng)隊(duì)列為空時(shí)热凹,有front=rear,而當(dāng)所有隊(duì)列空間全占滿(mǎn)時(shí)泪电,也有front=rear般妙。為了區(qū)別這兩種情況,規(guī)定循環(huán)隊(duì)列最多只能有MaxSize-1個(gè)隊(duì)列元素相速,當(dāng)循環(huán)隊(duì)列中只剩下一個(gè)空存儲(chǔ)單元時(shí)碟渺,隊(duì)列就已經(jīng)滿(mǎn)了。因此突诬,隊(duì)列判空的條件時(shí)front=rear苫拍,而隊(duì)列判滿(mǎn)的條件時(shí)front=(rear+1)%MaxSize。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末攒霹,一起剝皮案震驚了整個(gè)濱河市怯疤,隨后出現(xiàn)的幾起案子浆洗,更是在濱河造成了極大的恐慌催束,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伏社,死亡現(xiàn)場(chǎng)離奇詭異抠刺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)摘昌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)速妖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人聪黎,你說(shuō)我怎么就攤上這事罕容。” “怎么了稿饰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵锦秒,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我喉镰,道長(zhǎng)旅择,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任侣姆,我火速辦了婚禮生真,結(jié)果婚禮上沉噩,老公的妹妹穿的比我還像新娘。我一直安慰自己柱蟀,他們只是感情好川蒙,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著产弹,像睡著了一般派歌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痰哨,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天胶果,我揣著相機(jī)與錄音,去河邊找鬼斤斧。 笑死早抠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的撬讽。 我是一名探鬼主播蕊连,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼游昼!你這毒婦竟也來(lái)了甘苍?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤烘豌,失蹤者是張志新(化名)和其女友劉穎载庭,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體廊佩,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡囚聚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了标锄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顽铸。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖料皇,靈堂內(nèi)的尸體忽然破棺而出谓松,到底是詐尸還是另有隱情,我是刑警寧澤践剂,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布鬼譬,位于F島的核電站,受9級(jí)特大地震影響舷手,放射性物質(zhì)發(fā)生泄漏拧簸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一男窟、第九天 我趴在偏房一處隱蔽的房頂上張望盆赤。 院中可真熱鬧贾富,春花似錦、人聲如沸牺六。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)淑际。三九已至畏纲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間春缕,已是汗流浹背盗胀。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锄贼,地道東北人票灰。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像宅荤,于是被迫代替她去往敵國(guó)和親屑迂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 棧 棧的英文單詞是Stack,它代表一種特殊的線(xiàn)性表冯键,這種線(xiàn)性表只能在固定一端(通常認(rèn)為是線(xiàn)性表的尾端)進(jìn)行插入惹盼,...
    Jack921閱讀 1,492評(píng)論 0 5
  • 隊(duì)列是只允許在一端進(jìn)行插入操作,而在另一端進(jìn)行刪除操作的線(xiàn)性表惫确。(先進(jìn)先出) 隊(duì)列的鏈試存儲(chǔ)結(jié)構(gòu) 隊(duì)列既可以用鏈表...
    AceKitty閱讀 341評(píng)論 1 1
  • 編譯環(huán)境:python v3.5.0, mac osx 10.11.4 什么是隊(duì)列 具有一定操作約束的線(xiàn)性表手报,只能...
    擲骰子的求閱讀 913評(píng)論 0 3
  • 1.棧 1.1.棧的定義 棧(stack)是限定僅在表尾(棧頂 top)進(jìn)行插入和刪除操作的后進(jìn)先出的線(xiàn)性表。 p...
    JonyFang閱讀 1,348評(píng)論 0 21
  • 《大夫》 我知道 你一定 想要拿把大刀 砍開(kāi) 我的頭顱 或者胸膛 看看里面到底留有多少帶膿的血水 以及紅色的人民...
    松子讀書(shū)閱讀 106評(píng)論 0 1