数据结构基础:栈和队列学习笔记
1、棧
1.1?棧的定義
棧是只能通過訪問它的一端來實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和檢索的一種特殊的線性數(shù)據(jù)結(jié)構(gòu)。棧的修改要遵循先進(jìn)后出的原則,這個(gè)是棧的核心。在棧中進(jìn)行插入和刪除操作的一端稱為棧頂(Top)。另一端被稱為棧底(bottom)。不包含任何元素的棧稱為空棧。
1.1.1 棧的運(yùn)算
? ? ? ?? ? ? ?
1.2 棧的存儲(chǔ)結(jié)構(gòu)
1.2.1 棧的順序存儲(chǔ)
棧的順序存儲(chǔ)是指用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)自棧頂?shù)綏5椎臄?shù)據(jù)元素,同時(shí)附設(shè)置指針top指示棧頂元素的位置。順序存儲(chǔ)的棧也被稱為順序棧。這種存儲(chǔ)方式,需要預(yù)先定義或申請棧的存儲(chǔ)空間,所以順序棧的空間容量是有限的。在入棧的時(shí)候要判斷是否棧滿的情況。否則會(huì)出現(xiàn)上溢的異常。
1.2.2 棧的鏈?zhǔn)酱鎯?chǔ)
為了解決順序棧可能存在上溢的不足,可以用鏈表存儲(chǔ)棧中的元素。鏈?zhǔn)酱鎯?chǔ)的棧也被稱為鏈棧。元素的插入、刪除操作僅能在棧頂一端進(jìn)行。因此可以不必設(shè)置頭節(jié)點(diǎn)。
1.2.3 棧的用途
棧的典型應(yīng)用包括表達(dá)式求值、括號匹配等。在編程領(lǐng)域?qū)崿F(xiàn)將遞歸過程轉(zhuǎn)變?yōu)榉沁f歸過程的處理中,棧可以起到重要作用。還可以實(shí)現(xiàn)數(shù)據(jù)的逆向輸出。?
2、隊(duì)列
2.1 隊(duì)列的定義
隊(duì)列是一種先進(jìn)先出的線性表,它只允許在表的一端插入元素,在表的另一端刪除元素。在隊(duì)列中,允許插入元素的一端稱為隊(duì)尾(Rear),允許刪除元素的一端稱為隊(duì)頭(Front)
2.2 隊(duì)列的基本運(yùn)算
? ? ? ?? ? ? ?
2.2 隊(duì)列的存儲(chǔ)結(jié)構(gòu)
2.2.1 隊(duì)列的順序存儲(chǔ)
利用一組地址連續(xù)的存儲(chǔ)單元存放隊(duì)列中的元素。由于隊(duì)列中的元素插入和刪除限定在兩端進(jìn)行,因此設(shè)置隊(duì)頭指針和隊(duì)尾指針需要分別指示當(dāng)前的隊(duì)頭元素和隊(duì)尾元素。順序隊(duì)列的存儲(chǔ)空間是提前設(shè)定好的,因此隊(duì)尾指針會(huì)有一個(gè)上限值,達(dá)到上限就不能夠再入隊(duì)操作了。需要等隊(duì)頭有元素被移除。這個(gè)和日常買東西排隊(duì)是很相似的,比如買東西限定排隊(duì)人數(shù)為20人,如果當(dāng)前已經(jīng)排滿了,此時(shí)工作人員會(huì)阻止你的排隊(duì)行為,直到第一個(gè)買東西離開后,你就就可以繼續(xù)排隊(duì)了。判斷順序隊(duì)列位空隊(duì)列的方法是隊(duì)頭和隊(duì)尾的值相同。
注意:針對空隊(duì)列要能區(qū)分隊(duì)頭隊(duì)尾元素,可以通過標(biāo)識位來區(qū)分隊(duì)頭和隊(duì)尾元素的不同。
2.2.2 隊(duì)列的鏈?zhǔn)酱鎯?chǔ)
隊(duì)列的鏈?zhǔn)酱鎯?chǔ)稱為鏈隊(duì)列。鏈隊(duì)列判斷是否位空隊(duì)列的條件是值相同并且均指向頭節(jié)點(diǎn)。
2.3 隊(duì)列的用途
隊(duì)列常用于需要排隊(duì)的場合,比如打印機(jī)打印文件、離散事件的計(jì)算機(jī)模擬、消息隊(duì)列、定時(shí)任務(wù)等方面。
IT技術(shù)分享社區(qū)
個(gè)人博客網(wǎng)站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機(jī)程序下載、ISP及串口基礎(chǔ)知識硬件:斷路器、接觸器、繼電器基礎(chǔ)知識
總結(jié)
以上是生活随笔為你收集整理的数据结构基础:栈和队列学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国石油大计算机在线考试中心,中国石油大
- 下一篇: 《实用软件工程》课程教学大纲(Pract