參考答案 / 中央 / 114 年 資料結構

國立中央大學資訊管理學系

中央 114 年資管所 資料結構 參考答案

共 14 題

參考答案 PDF各校參考答案的 PDF,訂閱考試資源分享信後會寄到您的信箱。訂閱領取 PDF

參考答案由作者與 AI 討論後逐題確認,不是各校公布的標準答案;若與各校公布不同,以各校為準。
最後更新:2026 年 11 月 3 日。發現錯誤歡迎來信。

這份考卷每一題的解析與手寫題的答題範例,收在《資管所考古題 111-115 計概資結全解》,可以免費試閱。

1Floyd's Cycle Detection 快慢指標偵測環

考點:Singly/Doubly Linked List:基本操作與優缺點比較

slow 每次走 1 步、fast 每次走 2 步;有環時兩者會相遇,無環時 fast 先走到 nullptr。

bool hasCycle(Node* head) {
    Node *slow = head, *fast = head;
    while (fast != nullptr && fast->next != nullptr) {
        slow = slow->next;
        fast = fast->next->next;
        if (slow == fast) return true;   // 相遇即有環
    }
    return false;                        // fast 走到底,無環
}

時間 O(n),空間 O(1)。

2(a)Inorder 走訪

考點:BST 基本性質:中序對應關係、比較次數計算與 Internal/External Node 定義

8, 10, 12, 15, 17, 20, 25。

2(b)刪除 Root 節點 15

考點:BST 基本性質:中序對應關係、比較次數計算與 Internal/External Node 定義

15 有兩個子節點,以右子樹最小值(inorder successor)17 取代 15,再刪除原來的葉節點 17。

(如簡答圖)

2(b) 參考答案圖

3(a)插入 60 並維持 Max-Heap 性質

考點:Heap 的建立與 heapify-up/heapify-down

60 放在陣列尾端(20 的右子),與 20 交換,再與 50 交換,升到 root。最終陣列:[60, 30, 50, 10, 15, 5, 20]。

3(b)移除最大值並復原 Max-Heap 性質

考點:Heap 的建立與 heapify-up/heapify-down

移除 root 60,尾端 20 移到 root,與較大的子節點 50 交換後即滿足 heap。最終陣列:[50, 30, 20, 10, 15, 5]。

4(a)DFS/BFS Spanning Tree

考點:BFS 與 DFS:定義、範例與比較

DFS spanning tree 的邊:b-a, a-d, d-e, e-g, e-h, h-c。

BFS spanning tree 的邊:b-a, b-c, b-d, b-g, c-h, d-e。

4(b)Kruskal 演算法

考點:Minimum Spanning Tree(MST)與求解演算法(Kruskal's、Prim's)

加入順序:b-c, c-h, e-h, a-d, b-d, b-g,總權重 88。

4(c)Prim 演算法

考點:Minimum Spanning Tree(MST)與求解演算法(Kruskal's、Prim's)

起點 b,加入順序:b-c, c-h, h-e, b-d, d-a, b-g,總權重 88。

5三維陣列位址計算(Row-major/Column-major)

考點:一維與二維陣列位址計算公式(Row-major/Column-major)

(a) 1508。

(b) 1532。

6Postfix 表示式求值

考點:Stack 應用技巧:Infix/Postfix/Prefix 轉換與 Palindrome 檢查

x=55,xmod7=6。

7(a)B-tree 優於 B+tree 的情境

考點:B-tree 與 B+tree 比較(含區塊大小影響)

  1. 以點查詢為主、熱門 key 集中:B-tree 內部節點即存資料,可能在淺層命中;B+ tree 必須走到 leaf。
  2. 空間吃緊且不需範圍查詢:B-tree 每個 key 只存一份;B+ tree 內部節點的 key 會在 leaf 層重複存放。

7(b)點查詢與範圍查詢兼顧之選型

考點:B-tree 與 B+tree 比較(含區塊大小影響)

選 B+ tree。

i. 空間效率:內部節點只存 key,fanout 高、樹較矮,I/O 較少。

ii. 讀寫效能:資料都在 leaf 且深度一致,點查詢時間穩定;leaf 以 linked list 相連,範圍查詢可循序讀取。

iii. 維護複雜度:插入刪除都在 leaf 層進行再向上 split/merge;B-tree 刪除內部節點的 key 還需找替代值,較複雜。

8Block Size 對 B-tree/B+tree 效能的影響

考點:B-tree 與 B+tree 比較(含區塊大小影響)

  • Block size 變大:fanout 增加,樹高 ≈logfanoutN 下降,I/O 次數減少。
  • 過大:每次 I/O 讀入多餘資料,浪費頻寬,節點內搜尋成本上升。
  • 過小:樹高增加,I/O 次數過多。
  • 實務上 node size 對齊磁碟區塊(如 4 KB),一次節點讀取對應一次 I/O。

9B-tree(t=3)插入追蹤

考點:B-tree 與 B+tree 比較(含區塊大小影響)

Operation 1(insert 26):根 [5, 13, 22, 35];葉 [1, 4] [6, 7, 8, 11] [14, 18] [25, 26, 27, 30, 31] [50, 60]

Operation 2(insert 29):葉 [25, 26, 27, 30, 31] 分裂,27 上升。根 [5, 13, 22, 27, 35];葉 [1, 4] [6, 7, 8, 11] [14, 18] [25, 26] [29, 30, 31] [50, 60]

Operation 3(insert 2):根已滿先分裂,22 成為新根。根 [22];第二層 [5, 13]、[27, 35];[5, 13] 的子節點 [1, 2, 4] [6, 7, 8, 11] [14, 18];[27, 35] 的子節點 [25, 26] [29, 30, 31] [50, 60]

Operation 4(insert 10):根 [22];第二層 [5, 13]、[27, 35];[5, 13] 的子節點 [1, 2, 4] [6, 7, 8, 10, 11] [14, 18];[27, 35] 的子節點 [25, 26] [29, 30, 31] [50, 60]

Operation 5(insert 9):葉 [6, 7, 8, 10, 11] 分裂,8 上升。根 [22];第二層 [5, 8, 13]、[27, 35];[5, 8, 13] 的子節點 [1, 2, 4] [6, 7] [9, 10, 11] [14, 18];[27, 35] 的子節點 [25, 26] [29, 30, 31] [50, 60]

中央其他年份