- 程式設計 = 資料結構 + 演算法
- 資料結構:資料儲存在記憶體的方式
-> 提升程式執行效率、節省記憶體空間使用量 - 資料儲存方式:array、鍵結串列(link list)、佇列(queue)、堆疊(stack)、樹(tree)、圖形(graph)
- array -> 使用連續的記憶體位址存資料
- array
優點:循序存放資料要存取資料很容易
缺點:中間插入資料時,需要將後面其他元素往後平移,較為麻煩,且容易有記憶體空間的浪費 - link list:透過記錄下一個節點的記憶體位置讓儲存資料更為彈性,不用綁在依序的記憶空間上,因此中間插入資料也容易(記憶位址不一定要連續)
- 佇列(queue):FIFO(First in First Out),先進先出
Enqueue :新元素加入佇列最後
Dequeue :最前面的元素離開佇列,先來的先出去 - 堆疊(stack):IFO(Last In, First Out),後進先出
Push :新元素加入堆疊最後
Pop :將最後面元素取出堆疊,後來的先出去 - 樹(tree):由根節點(root node)出發,下方分別為子節點,子節點又會有子節點。可以透過陣列或是鏈結串列來實作樹(tree)資料結構
- 圖形(graph):主要由節點(vertices)和邊(edge)所組成,若是邊有方向性則稱為有向圖,反之則為無向圖,邊上也可以有加權數字來表示權重或是距離