數據結構基礎:棧和隊列學習筆記

1、棧

1.1?棧的定義

棧是只能通過訪問它的一端來實現數據的存儲和檢索的一種特殊的線性數據結構。棧的修改要遵循先進后出的原則,這個是棧的核心。在棧中進行插入和刪除操作的一端稱為棧頂(Top)。另一端被稱為棧底(bottom)。不包含任何元素的棧稱為空棧。

1.1.1 棧的運算

? ? ? ?? ? ? ?

1.2 棧的存儲結構

1.2.1 棧的順序存儲

棧的順序存儲是指用一組地址連續的存儲單元依次存儲自棧頂到棧底的數據元素,同時附設置指針top指示棧頂元素的位置。順序存儲的棧也被稱為順序棧。這種存儲方式,需要預先定義或申請棧的存儲空間,所以順序棧的空間容量是有限的。在入棧的時候要判斷是否棧滿的情況。否則會出現上溢的異常。

1.2.2 棧的鏈式存儲

為了解決順序棧可能存在上溢的不足,可以用鏈表存儲棧中的元素。鏈式存儲的棧也被稱為鏈棧。元素的插入、刪除操作僅能在棧頂一端進行。因此可以不必設置頭節點。

1.2.3 棧的用途

棧的典型應用包括表達式求值、括號匹配等。在編程領域實現將遞歸過程轉變為非遞歸過程的處理中,棧可以起到重要作用。還可以實現數據的逆向輸出。?

2、隊列

2.1 隊列的定義

隊列是一種先進先出的線性表,它只允許在表的一端插入元素,在表的另一端刪除元素。在隊列中,允許插入元素的一端稱為隊尾(Rear),允許刪除元素的一端稱為隊頭(Front)

2.2 隊列的基本運算

? ? ? ?? ? ? ?

2.2 隊列的存儲結構

2.2.1 隊列的順序存儲

利用一組地址連續的存儲單元存放隊列中的元素。由于隊列中的元素插入和刪除限定在兩端進行,因此設置隊頭指針和隊尾指針需要分別指示當前的隊頭元素和隊尾元素。順序隊列的存儲空間是提前設定好的,因此隊尾指針會有一個上限值,達到上限就不能夠再入隊操作了。需要等隊頭有元素被移除。這個和日常買東西排隊是很相似的,比如買東西限定排隊人數為20人,如果當前已經排滿了,此時工作人員會阻止你的排隊行為,直到第一個買東西離開后,你就就可以繼續排隊了。判斷順序隊列位空隊列的方法是隊頭和隊尾的值相同。

注意:針對空隊列要能區分隊頭隊尾元素,可以通過標識位來區分隊頭和隊尾元素的不同。

2.2.2 隊列的鏈式存儲

隊列的鏈式存儲稱為鏈隊列。鏈隊列判斷是否位空隊列的條件是值相同并且均指向頭節點。

2.3 隊列的用途

隊列常用于需要排隊的場合,比如打印機打印文件、離散事件的計算機模擬、消息隊列、定時任務等方面。

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

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

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

相關文章

Jquery高級編程

1.javascript具有等于()和等同()等號操作符是危險的,因為它在執行比較之前,強制執行類型轉換。 2.非侵擾式編程。 3.3.3Jquery的框架結構,待深入理解。 4.選擇器 a.元素選擇器(元素屬…

C語言鏈表為什么倒著輸出,關于鏈表倒著存,正著輸出。

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓題目要求是你輸入a->b->c->d,然后存在內存里,然后改變在內存里的存儲,改成存d->c->b->a,然后輸出還是abcd,能不能就是用一個數組也存一份輸入的&#x…

idea @Autowired 注入爆紅(無法注入)

問題如下圖所示,idea Autowired 注入爆紅(無法注入) seettings ----> Editor Inspactions ----->spring ---->spring Core ----> Code ----> Autowring for Bean Class 去掉那個勾 效果如下

華為手機相冊怎么鏡像翻轉_怎么利用手機相冊制作電子視頻

怎么通過手機照片制作視頻?將照片做成視頻并不是很難,可以直接在手機上進行操作,下面來看看是怎么操作的。方法/步驟在手機上打開清爽視頻編輯器,有視頻編輯、美拍美攝、電子相冊、特效模板、動感視頻、創意視頻、動態字幕、視頻變…

Cluster_analysis

https://en.wikipedia.org/wiki/Cluster_analysis轉載于:https://www.cnblogs.com/WCFGROUP/p/5557907.html

數據結構基礎:樹結構的學習筆記

1、樹的定義樹是n(n>0)個節點的有限集合。當n0時稱為空樹,當n>0 為非空樹,任何非空樹中,有且僅有一個根節點;其余節點可分為m(m>0)個互不相交的有限集合T1、T2 等,其中每一個集合都可以稱為一棵樹&#xff0c…

android組件用法說明,Android第三方控件PhotoView使用方法詳解

Android第三方控件PhotoView使用方法詳解發布時間:2020-10-21 15:06:09來源:腳本之家閱讀:74作者:zhaihaohao1PhotoView的簡介:這是一個圖片查看庫,實現圖片瀏覽功能,支持pinch(捏合)手勢或者點…

idea中新建分支并且切換到新建的分支上

開發新功能,idea上新建自己的分支,要在dev分支上新建 首先,idea右下角可以看到目前在dev分支上 點擊dev,接著New Branch 輸入分支名 在Local Branches中就顯示了 然后可以看到已經切換到剛新建的分支上了 想要切換到剛新建的分支上開發時,可以點擊分支,在彈框上點擊Checkout

vnpy怎么創建策略并回測_【手把手教你】入門量化回測最強神器backtrader(一)

1 引言目前基于Python的量化回測框架有很多,開源框架有zipline、vnpy、pyalgotrader和backtrader等,而量化平臺有Quantopian(國外)、聚寬、萬礦、優礦、米筐、掘金等,這些量化框架或平臺各有優劣。就個人而言&#xff…

數據結構基礎:算法的基礎知識筆記

1、算法的概念算法是問題求解過程中的精確描述,它為解決某一特定類型的問題規定了一個運算過程。2、算法的特點2.1 有窮性一個算法必須在有窮的步驟結束后結束,并且每一步都在有窮時間內完成。2.2 確定性算法的執行過程中每一步都要有確定的定義&#xf…

Spring Bean Scope 有狀態的Bean 無狀態的Bean

在Spring的Bean配置中&#xff0c;存在這樣兩種情況&#xff1a; [xhtml] view plaincopy<bean id"testManager" class"com.sw.TestManagerImpl" scope"singleton" /> <bean id"testManager" class"com.sw.TestMana…

數據結構基礎:圖結構的學習筆記

1、圖的定義圖是比樹更加復雜的數據結構&#xff0c;在圖的結構當中&#xff0c;任意兩個節點之間都有可能有直接關系&#xff0c;所以圖中一個節點的前驅和后繼的數目是沒有限制的。2、圖的用途用于描述各種復雜的數據對象&#xff0c;在自然科學、社會科學和人文科學等很多領…

企業網站 源碼 服務郵箱:_企業網站建設對于服務器的選擇至關重要

網站建設是離不開租用服務器的&#xff0c;這是目前大多數企業都在做的。但有些企業由于對網站服務器的租用技巧及經驗的缺乏&#xff0c;經常會導致網站在運營過程中出現非常多的問題&#xff0c;嚴重影響了企業業務的正常開展。石家莊網站建設方面的人才來說明幾點不容忽視的…

linux sli 提高效率,從原理到性能提升 MCP78智能SLI全解析

NVIDIA正式發布了“Hbrid SLI”技術在昨日的2008 CES上&#xff0c;NVIDIA正式向外界發布了“Hbrid SLI”技術&#xff0c;即我們所俗稱的混合SLI&#xff0c;而NVIDIA在發布時已更正式名為“智能SLI技術”。雖然這僅僅是NVIDIA在此次消費電子展上的宣講主題之一&#xff0c;但…

git操作代碼文件的顏色變化

1.若文件顯示紅色&#xff0c;表示文件未add到git進行管理 2.若文件顯示綠色&#xff0c;表示文件已經交給git管理&#xff0c;但從未上傳到遠程倉庫中 3.若文件顯示藍色&#xff0c;表示文件已經上傳過遠程倉庫&#xff0c;且此時本地文件與遠程倉庫文件不一致 4.若文件顯示…

[GitHub]第三講:簡單分支操作

Git 最核心的操作對象是版本&#xff08; commit &#xff09;&#xff0c;最核心的操作技巧就是分支。 什么是分支&#xff1f; 倉庫創建后&#xff0c;一旦有了新 commit&#xff0c;默認就會放到一個分支上&#xff0c;名字叫 master。前面咱們一直看到的多個版本組成的一條…

算法基礎:常用的排序算法知識筆記

1、算法外排序分類2、冒泡排序冒泡排序&#xff08;Bubble Sort&#xff09;屬于交換排序&#xff0c;它的原理是&#xff1a;循環兩兩比較相鄰的記錄&#xff0c;如果反序則交換&#xff0c;直到沒有反序的記錄為止。實現算法&#xff1a;/*** 冒泡排序優化后的算法* 設置一個…

302狀態碼_http狀態碼是什么?301 302 404的SEO應用場景

什么是HTTP狀態碼&#xff1f;簡單的講&#xff0c;就是用以表示網頁服務器HTTP響應狀態的3位數字代碼。其中1xx表示臨時響應&#xff0c;2xx表示成功處理了請求&#xff0c;3xx代表重定向&#xff0c;4xx表示請求錯誤&#xff0c;而5xx表示服務器錯誤。除了網頁正常返回200之外…

Android高版本開機廣播,android3.1以上,假如程序沒有啟動過,怎么獲取開機廣播呢?...

官方說不支持&#xff1a;Launch controlson stopped applicationsStarting from Android 3.1, the systems package manager keepstrack of applications that are in a stopped state and provides ameans of controlling their launch from background processes andother a…

git push前請先git pull

開發過程中 如果要推送代碼到遠程倉庫&#xff0c;請先git pull。養成好習慣。 原因很簡單&#xff0c;在你開發過程中&#xff0c;你的同事可能也在改代碼然后他提交了沒通知你&#xff0c;你直接git push很容易造成代碼沖突&#xff0c;代碼沖突解決也簡單&#xff0c;可萬一…