c++ 優先隊列_C/C++數據結構:隊列結構最全解析!帶你零基礎入門隊列結構

69eebc46bda701c715c10d90881771af.png

前言

上一章節針對于C語言棧結構做了解析,不清楚的可以回顧一下。

本章節主要針對于C語言的基礎數據結構隊列做以解析。

數據結構之隊列

隊列是一種特殊的 線性表 ,特殊之處在于它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。

故隊列基本操作如下:

(1)創建隊列

(2)入隊

(3)出隊

(4)判斷隊列是否為NULL

(5)獲取隊頭元素

數據結構之隊列分類

根據隊列實現方式與出隊方式,我們可以把棧分為以下三種描述方式:

(1)原生數組隊列

(2)動態申請內存的數組描述(普通隊列和循環隊列)

(3)鏈式結構描述

1f3ac8a6554d7d55c9573ef683c8bc0b.png

優先隊列

原生數組描述隊列

數組描述棧,只不過多了先進先出的限制而已,它是靜態分配的,即使用前,它的內存就已經以數組的形式分配好了,所以在使用時,需要注意隊頭隊尾的標記。

原生數組描述隊列實現試題案例:逆序整數

fbdbd8ed9ef6c3a8c38c39d391a8adb3.png

動態數組描述隊列

動態申請內存的數組描述不再采用上述實用性的方法了,而是通過封裝相關隊列函數去描述這種結構。這是寫數據結構的一種大致方法。

1.結構體定義與隊列的創建過程:

結構體定義:描述隊列的屬性:隊頭標記,隊尾標記,隊列空間

創建隊列其實就是創建結構體變量

具體代碼

2a34072aa672dc3db97b298635e59c2a.png

ps:隊頭和隊尾頂標記初始值一般都是-1 ,為了滿足隊列標記和數組下標一致

2.入隊操作

注意: 我們的實現是將最新的元素放在了數組的末尾, 那么數組末尾的元素就是我們的隊列隊尾元素,故可以使用隊尾標記去計算隊列中的元素個數。然后每次入隊后,隊尾標記往后移動。

具體實現代碼:

17d96b96182664ced8234634071a1dd1.png

3.出隊操作和獲取隊頭元素

注意: 出隊操作應該是將隊頭元素刪除,由于數組實現的隊列無法刪除,故只能把隊頭標記往隊尾移動,簡稱為一種"偽刪除"。

具體實現代碼:

02dee7f8df76141026a72812211fb606.png

4.判斷棧是否為空

用戶判斷棧中是否有元素,通過隊尾和隊頭標記去做即可

具體實現代碼:

edcf02db4124af5084e7c7151d93d850.png

動態申請內存的數組描述隊列測試代碼

ad068eadaddfe92e317580693d4df7a7.png


ps:循環隊列是通過取余形成的循環,這里不過多介紹,有興趣的可以看看相關資料。

鏈式隊列

鏈式隊列: 鏈表的尾插法即可

024db9032a477192cb799c00b93161b5.png

具體實現源碼獻上

#include 

優先隊列:根據優先權去決定你出隊的元素,故數據中存在優先權衡量的值,相關實現代碼如下:

#include 

希望對大家有幫助!

另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!

C語言C++編程學習:

點擊領取C/C++編程學習資料?jq.qq.com

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!

編程學習軟件分享:

c030381b6cd1165cb0e959a614f0e6e6.png

編程學習視頻分享:

702524a07c208bff889bcae6ecbe736f.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370784.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370784.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370784.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

bit-map再顯身手:test.txt中有42億個無符號整數, 求不存在于test.txt中的最小無符號整數。限制: 可用內存為600MB....

先看看這個題目:test.txt中有42億個無符號整數, 求不存在于test.txt中的最小無符號整數. 限制: 可用內存為600MB. 又是大數據。 看到42億, 有靈感沒? 要知道, 2的32次方就是42億多一點點啊。42億個無符號…

周期均方根和有效值的區別_黑豬肉和白豬肉有啥區別?

為啥散養黑豬肉的價格要比白豬貴很多?這其中的原因不看不知道!市面上的散養黑豬肉通常要比白豬肉貴很多,但是仍有不少人喜歡買黑豬肉回家吃,散養黑豬肉和白豬肉不僅僅是口感上有所差距,其價值差距體現在很多方面,接下來小編就和大…

BZOJ1734: [Usaco2005 Feb]Aggressive cows 憤怒的牛

【傳送門:BZOJ1734】 簡要題意: 約翰有N 間牛棚,這些牛棚坐落在一條直線上,第i 間牛棚位于坐標Xi 的位置。他要把C 頭 奶牛安排在這些牛棚里。每間牛棚最多可以放一頭奶牛,也可以空著。這些奶牛的脾氣都很暴燥&#xf…

CSS基礎范例

1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>Title</title>6 <style>7 *{8 margin: 0; /*重置*/9 padding: 0…

測試環境搭建流程_前端構建 DevOps 搭建 DevOps 基礎平臺(中)

前言搭建基礎平臺搭建上篇的時候的時候&#xff0c;已經介紹過了項目流程設計、數據庫搭建、jwt 登錄等模塊。此篇我們介紹分支管理設計及其他的基礎模塊。后端模塊DevOps - Gitlab Api使用(已完成&#xff0c;點擊跳轉)DevOps - 搭建 DevOps 基礎平臺(已完成 50%)基礎平臺搭建…

什么是PermGen泄漏?

接下來是對Java應用程序中特定類型的內存問題的實用介紹。 即–我們將分析導致java.lang.OutOfMemoryError&#xff1a;PermGen空間的錯誤 堆棧跟蹤中的癥狀。 首先&#xff0c;我們將介紹理解該主題所需的核心概念&#xff0c;并說明什么是對象&#xff0c;類&#xff0c;類…

html浮動炫酷樣式,jQuery和CSS3炫酷表單浮動標簽特效

這是一款炫酷的jQuery和CSS3表單浮動標簽特效。浮動標簽是指輸入框中的文字或占位文本在輸入框聚焦的時候&#xff0c;以動畫的方式浮動到指定的地方。浮動標簽特效是一種新穎時尚的動畫特效&#xff0c;不僅效果很酷&#xff0c;而且能以明確的方式提示用戶該輸入框應該填寫上…

rto凈化效率計算公式_全面剖析 石油化工行業RTO蓄熱式焚燒爐的優勢要素

在我國的國民經濟發展中&#xff0c;石油化工產業是重要的能源基礎工業&#xff0c;但是廢氣的治理問題一直困擾著許多企業。直到RTO蓄熱式焚燒爐的面世&#xff0c;為石油化工行業的廢氣治理帶來了新希望。如今&#xff0c;有機廢氣治理工作越來越受到廣泛重視&#xff0c;傳統…

python作業:高級FTP程序

要求&#xff1a; 用戶加密認證允許同時多用戶登錄每個用戶有自己的家目錄 &#xff0c;且只能訪問自己的家目錄對用戶進行磁盤配額&#xff0c;每個用戶的可用空間不同允許用戶在ftp server上隨意切換目錄允許用戶查看當前目錄下文件允許上傳和下載文件&#xff0c;保證文件一…

webpack學習筆記 (一)

一、安裝nodejs&#xff1b; 點擊打開nodejs官方站點&#xff1b; 點擊下圖框住的按鈕&#xff0c;下周nodejs安裝包&#xff1b; 安裝下載好的安裝包。 安裝完畢之后&#xff0c;在cmd中輸入node -v查看是否已經安裝成功 如果有版本號顯示&#xff0c;則代表安裝成功&#xf…

將渦輪增壓器添加到JEE Apps

我扮演的關鍵角色之一是在本地社區中傳播Akka。 作為討論的一部分&#xff0c;人們通常會想到的問題/疑問是Akka如何針對編寫良好的Java / JEE應用程序提供更好的可伸縮性和并發性。 由于底層硬件/ JVM保持不變&#xff0c;因此參與者模型如何比傳統的JEE應用程序發揮更多的功…

python package_python之package定義

一.簡單說明 python是通過module組織代碼的&#xff0c;每一個module就是一個python文件&#xff0c;但是modules是通過package來組織的。我們平時在簡單測試的時候 一般就是幾個Python文件存放在同級的目錄下&#xff0c;但是當我們開始嘗試開發更為復雜的項目時&#xff0c;p…

html 手機端無法拖動地圖,關于騰訊地圖api的禁止地圖拖動問題

禁用滾動和拖動*{margin:0px;padding:0px;}body, button, input, select, textarea {font: 12px/16px Verdana, Helvetica, Arial, sans-serif;}p{width:603px;padding-top:3px;overflow:hidden;}.btn{width:142px;}#container{min-width:600px;min-height:767px;}//初始化函數…

《一起》個人進展——Day07

昨天做了些什么:實現登錄界面的美化 今天的計劃:還是準備進行與其他界面的融合 遇到的困難:代碼了解不夠&#xff0c;融合起來會出現bug轉載于:https://www.cnblogs.com/gxt-/p/6828131.html

epoll nio區別_【總結】兩種 NIO 實現:Selector 與 Epoll

我想用這個話題小結下最近這一階段的各種測試和開發。其實文章的內容主要還是想總結一下NIO Socket&#xff0c;以及兩種不同操作系統實現NIO的方式&#xff0c;selector和epoll。問題應該從服務器端開始說起。我們都寫過net包下的socket&#xff0c;用socket的accept方法來等待…

MapReduce的工作原理

一、MapReduce模型框架 MapReduce是一個用于大規模數據處理的分布式計算模型&#xff0c;最初由Google工程師設計并實現的&#xff0c;Google已經將完整的MapReduce論文公開發布了。其中的定義是&#xff0c;MapReduce是一個編程模型&#xff0c;是一個用于處理和生成大規模數據…

react實現多行文本超出加省略號

http://www.css88.com/archives/5206 overflow : hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; 根據該文章方法&#xff0c;放在react項目中發現并不能實現&#xff0c;仔細觀察發現原來react解析出來的css樣…

Google Guava MultiMaps

番石榴 這是系列文章中的第一篇&#xff0c;我將嘗試解釋和探索Google很棒的Guava java庫 。 我在搜索Apache Commons Collections的通用版本時遇到了番石榴&#xff08;Guava&#xff09;–我需要一個Bimap并且厭倦了必須使用強制類型轉換來填充我的代碼–但是我發現要好得多…

qq群 html,我的群組-普通群組.html

&#xfeff;我的群組&#xff0d;普通群組$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resou…

查看PLC IP 端口_西門子828D數控系統X130接口通訊怪異現象(X130手動設置的 IP)...

西門子828D數控系統&#xff0c;調試PLC過程中遇到網絡通信怪異問題(不能直連非要加個路由器)&#xff0c;筆記本電腦的以太網網絡直接連接顯示網絡電纜被拔出&#xff0c;如下圖所示&#xff1a;奇怪&#xff0c;怎么出現這種情況了呢&#xff0c;因為我用這臺電腦調試過別的P…