国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > 數(shù)據(jù)結(jié)構(gòu)中的隊(duì)列(queue)是什么,它有什么應(yīng)用場(chǎng)景?

數(shù)據(jù)結(jié)構(gòu)中的隊(duì)列(queue)是什么,它有什么應(yīng)用場(chǎng)景?

來源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-10-11 02:44:06 1696963446

一、數(shù)據(jù)結(jié)構(gòu)中的隊(duì)列

介紹

隊(duì)列是一種特殊的線性表,特殊之處在于它只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作,和棧一樣,隊(duì)列是一種操作受限制的線性表。進(jìn)行插入操作的端稱為隊(duì)尾,進(jìn)行刪除操作的端稱為隊(duì)頭。隊(duì)列的數(shù)據(jù)元素又稱為隊(duì)列元素。在隊(duì)列中插入一個(gè)隊(duì)列元素稱為入隊(duì),從隊(duì)列中刪除一個(gè)隊(duì)列元素稱為出隊(duì)。因?yàn)殛?duì)列只允許在一端插入,在另一端刪除,所以只有較早進(jìn)入隊(duì)列的元素才能最先從隊(duì)列中刪除,故隊(duì)列又稱為先進(jìn)先出(FIFO—first in first out)線性表。

應(yīng)用

隊(duì)列的數(shù)組實(shí)現(xiàn)

隊(duì)列可以用數(shù)組Q[1…m]來存儲(chǔ),數(shù)組的上界m即是隊(duì)列所容許的最大容量。在隊(duì)列的運(yùn)算中需設(shè)兩個(gè)指針:head,隊(duì)頭指針,指向?qū)嶋H隊(duì)頭元素;tail,隊(duì)尾指針,指向?qū)嶋H隊(duì)尾元素的下一個(gè)位置。一般情況下,兩個(gè)指針的初值設(shè)為0,這時(shí)隊(duì)列為空,沒有元素。數(shù)組定義Q[1…10]。Q(i) i=3,4,5,6,7,8。頭指針head=2,尾指針tail=8。隊(duì)列中擁有的元素個(gè)數(shù)為:L=tail-head。現(xiàn)要讓排頭的元素出隊(duì),則需將頭指針加1。即head=head+1這時(shí)頭指針向上移動(dòng)一個(gè)位置,指向Q(3),表示Q(3)已出隊(duì)。如果想讓一個(gè)新元素入隊(duì),則需尾指針向上移動(dòng)一個(gè)位置。即tail=tail+1這時(shí)Q(9)入隊(duì)。當(dāng)隊(duì)尾已經(jīng)處理在最上面時(shí),即tail=10,如果還要執(zhí)行入隊(duì)操作,則要發(fā)生”上溢”,但實(shí)際上隊(duì)列中還有三個(gè)空位置,所以這種溢出稱為”假溢出”。

隊(duì)列的鏈表實(shí)現(xiàn)

在隊(duì)列的形成過程中,可以利用線性鏈表的原理,來生成一個(gè)隊(duì)列。

基于鏈表的隊(duì)列,要?jiǎng)討B(tài)創(chuàng)建和刪除節(jié)點(diǎn),效率較低,但是可以動(dòng)態(tài)增長。

隊(duì)列采用的FIFO(first in first out),新元素(等待進(jìn)入隊(duì)列的元素)總是被插入到鏈表的尾部,而讀取的時(shí)候總是從鏈表的頭部開始讀取。每次讀取一個(gè)元素,釋放一個(gè)元素。所謂的動(dòng)態(tài)創(chuàng)建,動(dòng)態(tài)釋放。因而也不存在溢出等問題。由于鏈表由結(jié)構(gòu)體間接而成,遍歷也方便。

隊(duì)列的基本運(yùn)算

(1)初始化隊(duì)列:Init_Queue(q) ,初始條件:隊(duì)q 不存在。操作結(jié)果:構(gòu)造了一個(gè)空隊(duì);

(2)入隊(duì)操作: In_Queue(q,x),初始條件: 隊(duì)q 存在。操作結(jié)果: 對(duì)已存在的隊(duì)列q,插入一個(gè)元素x 到隊(duì)尾,隊(duì)發(fā)生變化;

(3)出隊(duì)操作: Out_Queue(q,x),初始條件: 隊(duì)q 存在且非空,操作結(jié)果: 刪除隊(duì)首元素,并返回其值,隊(duì)發(fā)生變化;

(4)讀隊(duì)頭元素:Front_Queue(q,x),初始條件: 隊(duì)q 存在且非空,操作結(jié)果: 讀隊(duì)頭元素,并返回其值,隊(duì)不變;

(5)判隊(duì)空操作:Empty_Queue(q),初始條件: 隊(duì)q 存在,操作結(jié)果: 若q 為空隊(duì)則返回為1,否則返回為0。

延伸閱讀:

二、隊(duì)列的特點(diǎn)

先進(jìn)先出 First In First Out(FIFO)

InitQueue(&Q):初始化隊(duì)列,構(gòu)造一個(gè)空隊(duì)列Q。

DestroyQueue(&Q):銷毀隊(duì)列。銷毀并釋放隊(duì)列Q所占用的內(nèi)存空間。

EnQueue(&Q,x):入隊(duì),若隊(duì)列Q未滿,將x加入,使之成為新的隊(duì)尾。

DeQueue(&Q,&x):出隊(duì),若隊(duì)列Q非空,刪除隊(duì)頭元素,并用x返回。

GetHead(Q,&x):讀隊(duì)頭元素,若隊(duì)列Q非空,則將隊(duì)頭元素賦值給x。

其他常用操作: QueueEmpty(Q):判隊(duì)列空,若隊(duì)列Q為空返回true,否則返回false。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
hash中的Key和value有什么區(qū)別?

一、hash中的Key和value的區(qū)別hash中的Key和value本意是鑰匙和值的意思,在應(yīng)用中通常被用作鍵值對(duì),例如在map、json中等。在鍵值對(duì)中,key是關(guān)...詳情>>

2023-10-11 04:34:49
數(shù)據(jù)結(jié)構(gòu)到底是什么?

一、數(shù)據(jù)結(jié)構(gòu)到底是什么數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。數(shù)據(jù)結(jié)構(gòu)包括三方面的內(nèi)容:邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和數(shù)據(jù)的運(yùn)...詳情>>

2023-10-11 04:07:19
為什么要引入紅黑樹,它比普通的平衡二叉樹究竟好在哪?

一、為什么要引入紅黑樹因?yàn)锳VL樹比紅黑樹更加平衡,但AVL樹在插入和刪除的時(shí)候也會(huì)存在大量的旋轉(zhuǎn)操作。所以當(dāng)你的應(yīng)用涉及到頻繁的插入和刪除...詳情>>

2023-10-11 03:54:43
數(shù)據(jù)庫系統(tǒng)的實(shí)現(xiàn)中采用了哪些常用的數(shù)據(jù)結(jié)構(gòu)?

一、數(shù)據(jù)庫系統(tǒng)的實(shí)現(xiàn)中采用的數(shù)據(jù)結(jié)構(gòu)線性表線性表結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)往往是可以依次排列的,就像小朋友手拉手,每位學(xué)生的前面和后面都僅有一個(gè)小...詳情>>

2023-10-11 03:43:55
堆內(nèi)存和數(shù)據(jù)結(jié)構(gòu)堆之間的關(guān)系是什么?

一、堆內(nèi)存和數(shù)據(jù)結(jié)構(gòu)堆之間的關(guān)系數(shù)據(jù)結(jié)構(gòu)中的堆和內(nèi)存中的堆是兩個(gè)完全不同的概念。它們除了名字一樣沒有什么必然的聯(lián)系。就跟蘋果一樣,一個(gè)...詳情>>

2023-10-11 03:40:44
快速通道