C/C++數(shù)據(jù)結(jié)構(gòu):隊(duì)列結(jié)構(gòu)最全解析!帶你零基礎(chǔ)入門隊(duì)列結(jié)構(gòu)
前言
上一章節(jié)針對(duì)于C語(yǔ)言棧結(jié)構(gòu)做了解析,不清楚的可以回顧一下。
本章節(jié)主要針對(duì)于C語(yǔ)言的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)隊(duì)列做以解析。

數(shù)據(jù)結(jié)構(gòu)之隊(duì)列
隊(duì)列是一種特殊的 線性表 ,特殊之處在于它只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作,和棧一樣,隊(duì)列是一種操作受限制的線性表。進(jìn)行插入操作的端稱為隊(duì)尾,進(jìn)行刪除操作的端稱為隊(duì)頭。
故隊(duì)列基本操作如下:
(1)創(chuàng)建隊(duì)列
(2)入隊(duì)
(3)出隊(duì)
(4)判斷隊(duì)列是否為NULL
(5)獲取隊(duì)頭元素
數(shù)據(jù)結(jié)構(gòu)之隊(duì)列分類
根據(jù)隊(duì)列實(shí)現(xiàn)方式與出隊(duì)方式,我們可以把棧分為以下三種描述方式:
(1)原生數(shù)組隊(duì)列
(2)動(dòng)態(tài)申請(qǐng)內(nèi)存的數(shù)組描述(普通隊(duì)列和循環(huán)隊(duì)列)
(3)鏈?zhǔn)浇Y(jié)構(gòu)描述

優(yōu)先隊(duì)列
原生數(shù)組描述隊(duì)列
數(shù)組描述棧,只不過(guò)多了先進(jìn)先出的限制而已,它是靜態(tài)分配的,即使用前,它的內(nèi)存就已經(jīng)以數(shù)組的形式分配好了,所以在使用時(shí),需要注意隊(duì)頭隊(duì)尾的標(biāo)記。
原生數(shù)組描述隊(duì)列實(shí)現(xiàn)試題案例:逆序整數(shù)

動(dòng)態(tài)數(shù)組描述隊(duì)列
動(dòng)態(tài)申請(qǐng)內(nèi)存的數(shù)組描述不再采用上述實(shí)用性的方法了,而是通過(guò)封裝相關(guān)隊(duì)列函數(shù)去描述這種結(jié)構(gòu)。這是寫數(shù)據(jù)結(jié)構(gòu)的一種大致方法。
1.結(jié)構(gòu)體定義與隊(duì)列的創(chuàng)建過(guò)程:
結(jié)構(gòu)體定義:描述隊(duì)列的屬性:隊(duì)頭標(biāo)記,隊(duì)尾標(biāo)記,隊(duì)列空間
創(chuàng)建隊(duì)列其實(shí)就是創(chuàng)建結(jié)構(gòu)體變量
具體代碼

ps:隊(duì)頭和隊(duì)尾頂標(biāo)記初始值一般都是-1 ,為了滿足隊(duì)列標(biāo)記和數(shù)組下標(biāo)一致
2.入隊(duì)操作
注意: 我們的實(shí)現(xiàn)是將最新的元素放在了數(shù)組的末尾, 那么數(shù)組末尾的元素就是我們的隊(duì)列隊(duì)尾元素,故可以使用隊(duì)尾標(biāo)記去計(jì)算隊(duì)列中的元素個(gè)數(shù)。然后每次入隊(duì)后,隊(duì)尾標(biāo)記往后移動(dòng)。
具體實(shí)現(xiàn)代碼:

3.出隊(duì)操作和獲取隊(duì)頭元素
注意: 出隊(duì)操作應(yīng)該是將隊(duì)頭元素刪除,由于數(shù)組實(shí)現(xiàn)的隊(duì)列無(wú)法刪除,故只能把隊(duì)頭標(biāo)記往隊(duì)尾移動(dòng),簡(jiǎn)稱為一種"偽刪除"。
具體實(shí)現(xiàn)代碼:

4.判斷棧是否為空
用戶判斷棧中是否有元素,通過(guò)隊(duì)尾和隊(duì)頭標(biāo)記去做即可
具體實(shí)現(xiàn)代碼:

動(dòng)態(tài)申請(qǐng)內(nèi)存的數(shù)組描述隊(duì)列測(cè)試代碼

ps:循環(huán)隊(duì)列是通過(guò)取余形成的循環(huán),這里不過(guò)多介紹,有興趣的可以看看相關(guān)資料。
鏈?zhǔn)疥?duì)列
鏈?zhǔn)疥?duì)列: 鏈表的尾插法即可

希望對(duì)大家有幫助!
另外如果你想更好的提升你的編程能力,學(xué)好C語(yǔ)言C++編程!彎道超車,快人一步!
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!

學(xué)習(xí)C/C++編程知識(shí),提升C/C++編程能力,歡迎關(guān)注UP一起來(lái)成長(zhǎng)!
另外,UP在主頁(yè)上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~
編程學(xué)習(xí)軟件分享:

編程學(xué)習(xí)視頻分享:
