在資料結構中,佇列與堆疊的產生主要是為了滿足某些特殊的編程運算,資料結構最大的一個特點就是為演算法提供基礎,使用不用的資料結構甚至能直接影響演算法的好壞,多數情況下,資料結構與演算法是一種相輔相成的關系,
堆疊:和我們上節說到的一樣,堆疊也是一種線性的存盤結構,但是它限制了只能在線性表的尾部進行資料插入和洗掉操作,根據一張圖示來進行形象說明,
堆疊的資料存放原則遵循 先進后出 的資料存放原則,因為它的資料出口只有一個,那就是堆疊頂,也就是上面所說的堆疊尾,如果一個堆疊里面沒有資料元素的存放又被稱之為 空堆疊,這種資料結構比較常用的場景就是程式計算中關于后綴運算式的計算,
佇列:同樣佇列也是線性存盤結構,和堆疊的資料處理方式正好是相反的,它是在線性表的一端進行資料插入,另一端則進行洗掉操作,根據圖示來進行說明,
佇列的資料存放原則遵循 先進先出 的存放原則,因為它擁有兩個出口,一個出口專門負責資料進入、另一個出口專門負責資料出去,資料進入對應的就是資料插入、資料出去對應的就是資料洗掉,
在 Java 語言中,同樣有關于佇列與堆疊的實體物件的實作,佇列對應的介面物件是 Queue、堆疊對應的則是 Stack,下面來看一下其中的部分原始碼分析,
Stack()有自己的實體化物件,Queue()只定義了介面,它是在其他表的物件中實作的,我們選擇使用 LinkedList<Object> 對 Queue()的實體化原始碼來說明,
根據原始碼分析,我們尋找到 LinkedList 實體實作了佇列介面,那么我們來看一下它的入隊方法是怎樣的,
注意:線性表與鏈表通常也是一起使用的,所以說資料結構外部使用線性表、內部再使用鏈表是非常的常見的資料結構的組裝形式,
文章來源于:微信公眾號【老王說編程】
另外作為一名編程學習者,如果你想更好的提升你的編程能力,好好學習C/C++編程知識以及資料結構,以后努力成為高薪演算法/軟體開發工程師的話!
C語言C++編程學習交流圈子,QQ群464501141【點擊進入】微信公眾號:C語言編程學習基地
分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/267315.html
標籤:其他
