8.在單向鏈結串列(Singly Linked List)中,存取第 k 個 節點時,其時間複雜度為 A(1)。
(A)O
(B)X
答案:登入後查看
統計: A(7), B(9), C(0), D(0), E(0) #3678224
統計: A(7), B(9), C(0), D(0), E(0) #3678224
詳解 (共 1 筆)
#7210682
【解題思路】
關鍵字:單向鏈結串列、存取第 k 個節點、時間複雜度、O(1)。
要解這題先回到資料結構的本質:
單向鏈結串列的每個節點只知道「下一個」的位置,沒有辦法像陣列一樣用索引直接跳到目標位置。
因此如果你要找第 k 個節點,你必須從頭開始:
head → node1 → node2 → node3 → … → node(k)
這樣的成本是 走 k 次,因此時間複雜度為:
O(k) ≈ O(n)(最壞情況 k = n)
而 O(1) 是陣列 Array 的特性,可以靠索引一次跳到位置。
單向鏈結串列做不到。
所以題目說是 O(1) → 錯。
【為什麼其他選項不正確(逐一破題)】
(A) O = 錯
O(1) 代表「不用看資料大小,一步就能找到」,這只有陣列才做得到。
(B) X = 對
因為 Singly Linked List 存取第 k 個節點必須逐一走訪,時間複雜度是 O(k),不是 O(1)。
【延伸知識】
各資料結構的存取特性比較:
| 資料結構 | 存取第 k 個元素 | 插入/刪除 |
|---|---|---|
| Array(陣列) | O(1) | O(n) |
| Singly Linked List(單向鏈結串列) | O(k) | O(1)(已知位置後) |
| Doubly Linked List(雙向鏈結串列) | O(k) | O(1)(已知位置後) |
重點:
鏈結串列插入刪除快(O(1)),但查詢慢(O(n))。
【記憶技巧】
口訣:
「陣列查詢快,鏈結慢慢踩。」
「串列找 k 步一步,陣列直接瞬間跳。」
0
0