常見資料結構及特點介紹

OldBoy~發表於2018-01-05

常見的資料結構
stack、heap、list、doubly-linked-list、queue、array(vector)、map、set、graph

Array(陣列)
最簡單而且應用最廣泛的資料結構之一
特徵:使用連續的記憶體來儲存、陣列中的所有元素都是相同的型別或型別的衍生(同質資料結構)、元素可以通過下標直接訪問

LinkedList(連結串列)
線性表的一種,最基本、最簡單,也是最常用的資料結構
特徵:元素之間的關係是一對一的關係(除了第一個和最後一個元素,其他元素都是首尾相接)、順序儲存結構和鏈式儲存結構兩種儲存方式

Stack(棧)
和佇列相似,一個帶有資料儲存特徵的資料結構
特徵:儲存資料是先進後出的、棧只有一個出口,只能從棧頂部增加和移除元素,類似試管,只有一個口

Heap(堆)
一般情況下,堆叫二叉堆,近似完全二叉樹的資料結構,一個父節點下面兩個子節點,子節點下又分別兩個子節點
特徵:子節點的鍵值或者索引總是小於它的父節點、每個節點的左右子樹又是一個二叉堆、根節點最大的堆叫最大堆或者大根堆、最小的叫最小堆或者小根堆

List(線性表)
由另個或者多個資料元素組成的有限序列
特徵:線性表是一個序列、0個元素構成的線性表是空表、第一個元素無先驅、最後一個元素無後繼、其他元素都只有一個先驅和後續、有長度,長度是元素個數,長度有限

doubly-linked-list(雙向連結串列)
特徵:每個元素都是一個物件,每個物件有一個關鍵字key和兩個指標(next和prev),就是向前移動或者向後移動

queue(佇列)
特徵:先進先出(FIFO)、併發中使用、可以安全將物件從一個任務傳給另一個任務

set(集合)
特徵:儲存從不重複的元素

map(字典)
特徵:關聯陣列、也被叫做字典或者鍵值對

graph(圖)
特徵:通常使用鄰接矩陣和鄰接表表示、前者易實現但是對於稀疏矩陣會浪費較多空間、後者使用連結串列的方式儲存資訊但是對於圖搜尋時間複雜度較高

相關文章