程序員需要了解系列:數據結構

關於棧和隊列:

棧(stack)

一種很重要的數據結構,棧採用 LIFO(Last In First Out)即後入先出的方式對內存進行操作**。它就像一個大的收納箱,你可以往裏面放相同類型的東西,比如書,最先放進收納箱的書在最下面,最後放進收納箱的書在最上面,如果你想拿書的話, 必須從最上面開始取,否則是無法取出最下面的書籍的。

棧的數據結構就是這樣,你把書籍壓入收納箱的操作叫做壓入(push),你把書籍從收納箱取出的操作叫做彈出(pop)

隊列

隊列和棧很相似但又不同,相同之處在於隊列也不需要指定元素的地址,不同之處在於隊列是一種 先入先出(First In First Out) 的數據結構。隊列在我們生活中的使用很像是我們去景區排隊買票一樣,第一個排隊的人最先買到票,以此類推,俗話說: 先到先得。

隊列的實現一般有兩種:順序隊列 和 循環隊列。
循環隊列一般是以環狀緩衝區(ring buffer)的方式實現的,它是一種用於表示一個固定尺寸、頭尾相連的緩衝區的數據結構,適合緩存數據流。

鏈表

下面我們來介紹一下鏈表和 二叉樹,它們都是可以不用考慮索引的順序就可以對元素進行讀寫的方式。通過使用鏈表,可以高效的對數據元素進行添加 和 刪除操作。而通過使用二叉樹,則可以更高效的對數據進行檢索。

鏈表的添加不涉及到數據的移動,所以鏈表的添加和刪除很快,而數組的添加涉及到數據的移動,所以比較慢,通常情況下,使用數組來檢索數據,使用鏈表來進行添加和刪除操作。

二叉樹
二叉樹也是一種檢索效率非常高的數據結構,二叉樹是指在鏈表的基礎上往數組追加元素時,考慮到數組的大小關係,將其分成左右兩個方向的表現形式。

二叉樹是由鏈表發展而來,因此二叉樹在追加和刪除元素方面也是同樣有效的。這一切的演變都是以內存爲基礎的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章