---
# System prepended metadata

title: Linked List
tags: [資料結構與演算法]

---

# Linked List
###### tags: `資料結構與演算法`
Linked List 類似 Array
```mermaid
graph LR

A -- next --> B --> C --> D --> Null

A(nodeA)
B(nodeB)
C(nodeC)
D(nodeD)
```
```javascript=
function LinkedNode(val, next) {
  this.val = val || -1
  this.next = next || null
}

let list = new LinkedNode

let currentNode = list
while(current)

```
- 優點
  + 可以無限增加元素
  + 執行插入跟刪除時特別快
- 缺點
  + 需要更多的 memory
  + 一定要從頭開始讀，儲存方式是不連續的（記憶體位置分散）
  + 反向讀取的話會很麻煩

#### Doubly Linked List : 進階的 Linked List

有往回指的屬性
```mermaid
graph LR

A --> B -- next --> C --> D --> E
D --> C --> B --> A
A --> F 
A(nodeA)
B(nodeB)
C(nodeC)
D(nodeD)
E[null]
F[null]
```