資料結構 = 邏輯結構 + 儲存結構 + 運算
資料結構課程的核心在於理解資料元素之間的關係以及如何在計算機中高效實現。本文提煉三大支柱,建立完整知識骨架。
一、基礎術語
- 資料:能輸入計算機、被識別處理的符號總稱
- 資料元素:資料基本單位(記錄),由資料項(欄位/屬性)組成
- 資料類型:對取值範圍與運算的限定(如
int、struct)
- 資料結構:資料元素間的相互關係(核心定義)
二、三大核心維度
| 維度 | 內容 | 典型分類 |
| 邏輯結構 | 元素間抽象關係(鄰接、從屬) | 線性結構(陣列、鏈表、堆疊、佇列) 非線性結構(樹、圖、集合) |
| 儲存結構 | 邏輯結構在記憶體中的具體映射 | 順序儲存(陣列) 鏈式儲存(指標/鏈表) 索引儲存(索引表) 雜湊儲存(Hash 表) |
| 資料運算 | 對資料的增刪改查、排序、遍歷等 | 針對具體 ADT 定義操作集合 如 Stack: push/pop/top/isEmpty |
三、邏輯與儲存的正交組合
同一邏輯結構可有多種儲存實現,各有優劣:
- 線性表:順序表(隨機存取 O(1)、插刪 O(N))vs 鏈表(插刪 O(1)、查找 O(N))
- 二叉樹:順序儲存(完全二叉樹/堆專用)vs 鏈式儲存(通用)
- 圖:鄰接矩陣(稠密圖、查邊 O(1))vs 鄰接表(稀疏圖、省空間)
四、抽象資料型態 (ADT) 思想
「資料結構 = 資料對象 + 關係集 + 操作集」
ADT 強調介面與實現分離:使用者只需知道「能做什麼」(操作語義),不需知道「怎麼做」(儲存細節)。這是軟體工程模組化、封裝的基石。
五、學習路線建議
- 掌握 C 指標、動態記憶體、遞歸 三板斧(工具)
- 按「邏輯 → 儲存 → 運算」順序攻克:線性表 → 堆疊/佇列 → 樹 → 圖 → 排序/查找
- 每學一結構,必寫 完整 ADT 介面(.h + .c),含建立、銷毀、核心操作、遍歷
- 對比同邏輯不同儲存的時空權衡,形成直覺
- 刷經典題(LeetCode/LintCode 標籤:Linked List, Tree, Graph, Heap)驗證理解
資料結構不是背誦代碼,而是建立「資料如何組織、如何流動、如何取捨」的系統性思維。