# 資料結構(Data Structure) ###### tags: `JavaScript` ## 定義: 是透過特定的順序和位置,把==很多個基本值 (primitives) 組合==在一起時,以便有效地存取或修改。 ![](https://hackmd.io/_uploads/SJn6MW_w3.png) 1. ## Array 陣列: * 含有index(索引)的排序方式 * 儲存資料的排序一定是連續的 * 可以用==index==快速找到指定資料 ![](https://hackmd.io/_uploads/Hkjjnbuwn.png) 2. ## Linked List 列表: * 儲存資料有順序但存放方式比較鬆散(不需要在連續區域裡) * 透過==指標==串連每筆資料 * 因結構鬆散,找尋資料時須從頭一個一個找起,效率較差; 但編輯資料(新增/刪除)相對容易,只要調整指標方向即可 ![](https://hackmd.io/_uploads/B11ZPWdwh.png) 3. ## Stack 堆疊: * 有順序結構 * 因單邊出入,有==後進先出==LIFO的(Last In First Out)特性 ![](https://hackmd.io/_uploads/rkcvdW_v2.png) 4. ## Queue 佇列: * 有順序結構 * 因不同邊出入,==先進先出==FIFO的(First In First Out)特性 ![](https://hackmd.io/_uploads/HyoUKZdwh.png) 5. ## Hash Table 雜湊表: * 數據成雙成對 key-value pair * ==可以透過key找到對應的value== ![](https://hackmd.io/_uploads/SyIzcbOD3.png) 6. ## Tree 樹狀v.s. Graph 圖形結構 * 都是Tree家族 * 有很多種形式(大到小/小到大/一次只能分化成兩個) * Tree 有根元素&階層關係(EX.網頁)! ![](https://hackmd.io/_uploads/ByzQjWOP2.png) 6. ## Set 集合 * 資料不可重複 * 擅長計算資料區域內容、交集的部分 ![](https://hackmd.io/_uploads/rJiUnZ_P2.png)