通訊錄需支持:數據持久化(啟動加載、退出保存)、增刪改查。核心權衡在於數據量規模與操作頻次。
| 維度 | 數組(靜態/動態) | 鏈表 |
|---|---|---|
| 內存分配 | 連續,需預估最大容量或動態擴容(realloc) | 離散,按需分配節點,無容量上限 |
| 插入/刪除 | O(n) 需移動元素 | O(1) 僅修改指針(已定位前驅節點) |
| 隨機訪問 | O(1) 下標直接訪問 | O(n) 需遍歷 |
| 持久化存儲 | 整體 fwrite/fread 簡單高效 | 需遍歷序列化每個節點,較繁瑣 |
| 內存碎片 | 無 | 頻繁 malloc/free 產生碎片 |
realloc 擴容),整體讀寫文件極其方便。fwrite。fread 分配節點並串聯 next 指針。