#中隊列的數據結構_數據結構與算法拓展(一)

棧與隊列

? 申明:由于篇幅限制,文章可能有些簡略,如果大家想要詳細了解,請一定要百度一下,并閱讀例題,完成習題

緒言:計算機科學在過去的數十年內發展飛速,各種新穎的技術紛至沓來:5G,VR,AI;大數據,可視化,區塊鏈;品種多樣,令人目不暇接。可是在這繁多的技術與科技背后,卻隱藏這這樣一個亙古不變的公式。

算法 ?+? 數據結構 ?=? 大千世界

? ? 算法的定義:解題方案的準確而完整的描述,是一系列解決問題的清晰指令。

? ? 數據結構的定義:計算機存儲、組織數據的方式。

? ? 今天,讓我們從最基礎的數據結構——棧(Stack)和隊列(Queue)開始,透過大千世界的幻影探索它的真實。

?????棧和隊列可以說是每一本的數據結構書都會加以介紹的最基本的數據結構,也是為數不多的線性數據結構。它們是所有數據結構初學者所必須掌握的知識。

?????棧在百度百科上的定義:又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。如圖

38a5b64fc40971cd6070f4a58ab54f4d.png

????隊列在百度百科上的定義:和棧一樣,隊列是一種操作受限制的線性表,不同之處在于它只允許在表頭進行刪除操作,在表尾進行插入操作。如圖。

0cdc120c660b14aed4786568dc1746e2.png

????由于都是受限制的線性表,所以在定義這兩種數據結構的時候都只需要一個線性表A?,但在這兩種數據由于操作不同,我們也需要兩組不同的指針加以甄別。如圖所示:

204c8558e1322959d9dbfaac6e7cf179.png

????棧和隊列的操作很簡單,棧只有在表尾進行插入和刪除操作,也就是入棧和出棧;而隊列也僅有在表尾進行插入和表頭進行刪除,也就是入隊和出隊操作。如圖:

0775c338a15bae772ee791dc34242573.png

????上訴代碼實現了一個基本的棧和隊列的功能,有興趣的同學可以把這段代碼copy后運行,自己編制幾組數據進行檢驗,如果能夠用草稿紙模擬一下過程是再好不過。

????只不過,唯一有一些可惜的是上述代碼中隊列的實現似乎有一些浪費額外空間,這是由于隊列進行出隊操作后,隊首指針之前的數據沒有了再使用的可能性,卻依然占用空間導致,這種隊列稱為順序隊列。

????解決方法有兩種,一種是使用鏈表來實現隊列,在隊首元素出隊后,直接釋放指針空間,這種隊列稱為鏈式隊列;另一種方法就是使用循環隊列。如圖:

ab4b16a3e399dc758e542629fd0789b9.png

????循環隊列的核心是:在一定寬度范圍內,保證每一個隊內的元素反復使用寬度內的空間。實現的方式就是模運算一旦隊尾或者隊首超過寬度限制,通過取余運算使之返回限定的寬度的頭部。

242b4cf1b3d58d1fb8c606c27e814df9.png

????這樣,通過模運算,使得整個序列的寬度限制在lim內。值的一提的是,這時已經不能用p>q來表示隊列已空,因為隊列循環的情況下p>q是合法的。

????通過以上的描述,大家可能對棧和隊列的基本知識有一定的了解,現在給出兩道例題,嘗試用這兩種數據結構去解決一些實際問題。

b587131bb2aa593e651b37a7ce216d28.png

f30fcdd95c87c30cde4d058ca7004da8.png

f46fdb6dc85c73475daddc85bed2514c.png

????上述兩道題詳細的向我們描述了應該如何用棧和隊列這種數據結構去解題。請詳細揣摩,如果能夠代碼實現,一定會有很大的收獲。

????從此,通過棧和隊列中兩種里程碑式的數據結構,我們進入了它的大門,而這也是我們學習它的開始。

????下面給出一些練習題,如果有興趣,大家可以去嘗試一二。

T1:https://www.luogu.com.cn/problem/P1044 ?棧的基礎知識理解。

T2:https://www.luogu.com.cn/problem/UVA12265 類似例題1

T3:https://www.luogu.com.cn/problem/P1823 二分+棧

T4:https://www.luogu.com.cn/problem/P1886 例題2模板題

謝謝閱讀。

寫留言

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

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

相關文章

display屬性_Numpy知識點(1)講解實操安裝/屬性/數組創建/運算

# 1、安裝包# pip install numpy #原生python安裝# conda install numpy #Anaconda的安裝# 使用Numpyimport numpy as np a np.arange(15) #生成0-14的一維數組display(a)display( )和print( )都是打印,在大多數編程軟件上都使用print,jupyter notebook中我們可以使用d…

計算機英語短文互譯,中英文互譯的英語短文

在英語學習中,閱讀能力是學習者發展其它語言能力(聽、說、寫、譯)的基礎。閱讀能力的高低,不僅決定了學習者獲取知識和信息的水平,而且在一定程度上也反映出學習者綜合運用英語的能力。小編精心收集了中英文互譯的英語短文,供大家欣賞學習!中英文互譯的英語短文&…

springboot怎么設置多個路徑全部跳轉首頁_SpringBoot(四)—Web開發(二)

這篇文章準備來記錄一下一個restful風格小項目的流程,上篇文章為它做了一個基礎,如果有什么錯誤希望大家能夠指出。目錄首頁國際化登錄攔截器CRUD一、首頁在訪問localhost:8080/的時候,默認訪問首頁在自己配置的SpringMVC的配置類中Configura…

計算機英語六級,英語六級作文范文:計算機

英語六級考試時間越來越近了,所以在備考的時候就更要掌握技巧,勤加練習。在備考英語六級寫作時,學習一篇好的范文,會給復習帶來事半功倍的效果。Using a computer every day can have more negative than positive effects on you…

python軟件_Python自制照片美顏軟件~

下午被一個騙子惡心到了,本來聽公開課聽得好好的,搞得心情極差,于是就中斷了網課,聽聽音樂,寫一下文章吧!前期準備①Python編譯環境以及Python代碼編輯器Pycharm的安裝:請在【微信公眾后臺】找到…

數據集怎么導出_PCA算法 | 數據集特征數量太多怎么辦?用這個算法對它降維打擊...

今天是機器學習專題的第27文章,我們一起來聊聊數據處理領域的降維(dimensionality reduction)算法。我們都知道,圖片格式當中有一種叫做svg,這種格式的圖片無論我們將它放大多少倍,也不會失真更不會出現邊緣模糊的情況。原因也很簡…

html form callback,Promise異步編程模式總結初始化Promise對象統一錯誤處理PromisifyfromCallbackMongoose Promisify...

Promise是JavaScript中的一種異步編程范式, 一個Promise對象表示一個即將完成但還未完成的操作。 鑒于JavaScript中異步和回調的編程風格, Promise模式可以有效地避免『Callback Hell』。Promise 最初有q和bluebird等實現,在ES2015(ES6)提出后…

常用命令_GIT常用命令大全

Git 是一個很強大的分布式版本控制系統。它不但適用于管理大型開源軟件的源代碼,管理私人的文檔和源代碼也有很多優勢。克隆遠程文件:git clone https://gitee.com/abcd/codefile.git projectgit checkout -b dev(本地分支名稱) origin/dev(遠程分支名稱…

nvidia顯示設置不可用_Nvidia顯示設置不可用,您當前未使用連接到NVIDIA GPU的顯示器的解決方法...

相信不少用戶遇到這樣一個問題,就是新購買的臺式機電腦,配置達標的情況下,玩游戲出現卡頓不流暢的現象,準備在NVIDIA控制面板查看是否設置的問題,在打開NVIDIA控制面板的時候,提示了“Nvidia顯示設置不可用…

html的id不能有.嗎,html – 哪些DOM元素不能接受id?

在HTML5中,id屬性是global attribute,可以在任何元素上指定.如果你看看Document Type Declaration for HTML4,你可以找到沒有%attrs的元素;在他們的屬性列表中定義,表示它們不支持id屬性.那些包括在“文檔頭”部分的底部附近:HEAD,TITLE,BASE,META,STYLE…

oracle tns 代理配置_Toad for oracle安裝配置與使用

一.toad安裝與配置注意:toad的使用本機電腦必須安裝完整版oracle客戶端,不能是精簡版的.1.1完整版oracle客戶端的安裝.1.解壓文件,安裝oracle客戶端打開安裝包,找到setup.ext,開始安裝。提示下圖彈窗,可根據此網址內容進行更改(https://blog.…

吳楓 python小課賬號_無門檻速學編程——Python小短課,自上而下分而治之

【Python小短課 11】自上而下,分而治之 做任何事都需計劃,編程也是。 譬如寫文章要列大綱、作畫要想布局,編程也需先謀全局,而后思慮細節。 就以上回說到的“找寶藏”這個程序舉例,最頂層的需求自然就是“找寶藏”&…

計算機本地磁盤D無法擴展,計算機上的本地磁盤D突然無法打開,表明它需要格式化...

接受使用數據恢復軟件將重要數據保存到其他磁盤FindDate特定操作: 運行軟件----“打開”后,將顯示要還原的驅動器. C \ D \ E \ F選擇您要還原的一個,它將開始. 掃描后,再次保存掃描的文件. 哈哈,希望對您有所幫助.最后&#xff0…

caffe運行不停止_caffe(gpu)安裝過程及問題解決

2019.12.05 caffe(gpu)安裝參考網址:教程1:weiliu89/caffe?github.com教程2:https://blog.csdn.net/yggaoeecs/article/details/79163789?blog.csdn.net環境:Ubuntu16.04cuda10.0安裝過程:git clone https://github.…

2021年考計算機考研三戰,2021考研的小伙伴有3條忠告一定要記得,這些都是歷年實戰經驗...

2021考研的小伙伴有3條忠告一定要記得,這些都是歷年實戰經驗,考研一定要記得避開三個大坑。1,分數線低的學校就一定容易考。有一些學校分數線看著很低但實際上難度不低,比如首都師范大學 ,很多專業就是國家線錄取甚至招…

c++ 返回string_JVM系列之:String.intern和stringTable

簡介StringTable是什么?它和String.intern有什么關系呢?在字符串對象的創建過程中,StringTable有起到了什么作用呢?一切的答案都在本文中,快來看看吧。intern簡介intern是String類中的一個native方法,所以它…

conda install 換源_ubuntu更換pip install,apt-get,conda install 成國內源

# 默認注釋了源碼鏡像以提高 apt update 速度,如有需要可自行取消注釋deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe mu…

python幫助文檔中查看內置函數_PYTHON官方文檔內置函數整理

一、數學運算類 abs(x) 求絕對值 1 、參數可以是整型,也可以是復數 2 、若參數是復數,則返回復數的模 complex([real[, imag]]) 創建一個復數 divmod(a, b) 分別取商和余數 注意:整型、浮點型都可以 float([x]) 將一個字符串或數轉換為浮點數…

計算機二級指針,C語言——二級指針

二級指針的概念首先任何值都有地址,一級指針的值雖然是地址,但這個地址做為一個值亦需要空間來存放,是空間就具有地址,這就是存放地址這一值的空間所具有的地址,二級指針就是為了獲取這個地址,一級指針所關…

華為 虛擬鍵盤_華為mate30 pro虛擬機械鍵盤特有體驗,雖是虛擬,但卻感受逼真...

華為Mate30 pro已于26日在國內正式發布了。此外,根據了解華為Mate30系列現在已經突破了5億的銷售額。看來,華為的這個下半年旗艦手機非常受歡迎啊。華為Mate30系列現在在國內已經發布了,其整體感官看上去與海外的沒有多大的區別。其實&#x…