參考答案 / 成大 / 113 年 資料結構

國立成功大學資訊管理研究所

成大 113 年資管所 資料結構 參考答案

共 9 題

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

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

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

A-1Linear Probing 插入、刪除與平均搜尋次數

考點:Hash Function 與雜湊表(Hash Table)基本概念

插入後(index:key,僅列非空):0:0 4:23 6:6 7:7 8:45 9:28 10:29 11:11 12:12 13:30 14:33 15:34 16:49

刪除 12 後(須將後續受影響的 key 前移):0:0 4:23 6:6 7:7 8:45 9:28 10:29 11:11 12:30 13:49 14:33 15:34

平均成功搜尋次數:α=12/19,12(1+11−1219)=137≈1.86 次。

A-2Component 定義與 Sollin's Method 求 MST

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

甲:component 是圖中的極大連通子圖:其中任兩頂點皆有路徑相通,再加入任何其他頂點就不再連通。

乙:每個頂點先各自為一個 component;每輪同時為每個 component 選出最小對外邊,一次加入(重複的邊只加一次)並合併,直到只剩一個 component。

第 1 輪:加入 1-3(2)、1-2(3)、7-8(3)、5-6(6)、3-4(7),得 {1,2,3,4}、{5,6}、{7,8}。

第 2 輪:加入 4-6(9)、5-7(11),合成一個 component。

MST:1-3(2)、1-2(3)、7-8(3)、5-6(6)、3-4(7)、4-6(9)、5-7(11),總權重 41。

A-3Heap Sort 與 Natural Merge Sort 降冪排序

考點:Merge Sort 與 Heap Sort 演算法邏輯

(1) Heap Sort:bottom-up 建 Min-Heap,得 [1, 3, 2, 5, 9, 6, 4, 14, 15, 13, 10, 8, 7, 12, 10];重複 n−1 次「堆頂與未排序區末端交換、heap size 減 1、對新堆頂 heapify-down」。結果:15, 14, 13, 12, 10, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1

(2) Natural Merge Sort:

初始 run:[10] [15, 8, 3] [13, 6, 2] [14, 5] [9] [10, 1] [7] [12, 4]

第 1 輪:[15, 10, 8, 3] [14, 13, 6, 5, 2] [10, 9, 1] [12, 7, 4]

第 2 輪:[15, 14, 13, 10, 8, 6, 5, 3, 2] [12, 10, 9, 7, 4, 1]

第 3 輪:15, 14, 13, 12, 10, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1

A-4AVL Search Tree 驗證與插入節點 5

考點:AVL Tree 插入與四種旋轉(LL/RR/LR/RL)調整規則

AVL search tree 是每個節點的 Balance Factor(左子樹高 − 右子樹高)皆屬於 {−1,0,1} 的 BST。題目的樹每個節點 BF 皆在 {−1,0,1} 且滿足 BST 排序,是 AVL tree。

插入 5:成為 6 的左子,7 的 BF 變成 2(LL 型),對 7 做單一右旋,6 取代 7 的位置,左子 5、右子 7。

(如簡答圖)

A-4 參考答案圖

B-1Big-O 定義與 Σi³ 界定證明

考點:漸近符號正式定義(O、Θ、o)

(a) f(n)=O(g(n)) 若且唯若存在正常數 c 與 n0,使所有 n≥n0 皆有 0≤f(n)≤c·g(n)。

(b) ∑i=0ni3=[n(n+1)2]2=n4+2n3+n24。

取 c=1、n0=1:n4+2n3+n24≤n4⟺n2(3n+1)(n−1)≥0,n≥1 時恆成立,故為 O(n4)。

設存在 c,n0 使 n4+2n3+n24≤cn3 對所有 n≥n0 成立,兩邊除以 n3 得 n4+12+14n≤c,取 n>4c 即矛盾,故不為 O(n3)。

B-2Tridiagonal Matrix 非零元素個數與位址計算

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

(a) 3n−2

(b) 依 row-major 順序把 |i−j|≤1 的元素依序存入 B(k 由 1 起算),aij 存在 B[k],k=2i+j−2。

B-3Stack 定義、Infix 轉 Postfix 與 Postfix 轉 Infix

考點:Stack 應用技巧:Infix/Postfix/Prefix 轉換與 Palindrome 檢查、Stack 與 Queue 定義與應用場景

(a) Stack 是後進先出(LIFO)的線性資料結構,插入(push)與刪除(pop)都只在同一端(top)進行。

(b) b b × 4 a × c × − 2 a × /

(c) 由左至右掃描 postfix,使用 operand stack:

  • 遇運算元:push。
  • 遇運算子:pop 兩次,先 pop 者為 op2、後 pop 者為 op1,組成 (op1 運算子 op2) 後 push 回 stack。

掃描完畢後,stack 中唯一的字串即為 infix 運算式。

B-4多元多次多項式一般化串列表示法

考點:多元多次多項式的一般化串列表示法(Triple Node)

B-4 參考答案圖

B-5BST 定義、前序中序重建與第 k 小元素查找

考點:BST 基本性質:中序對應關係、比較次數計算與 Internal/External Node 定義、Red-Black Tree 未 Augmented 時不具備 O(log n) 排名/中位數查詢能力、由前序+中序/中序+後序決定唯一 Binary Tree(前序+後序為何不行)

(a) BST 是一棵二元樹,每個節點 v 的左子樹所有 key <v.key< 右子樹所有 key,且左右子樹也都是 BST。

(b) (如簡答圖)

(c) 每個節點多存 leftSize(左子樹節點數):

struct Node { int key; int leftSize; Node *left, *right; };

Node* findKthSmallest(Node* root, int k) {
    if (root == nullptr) return nullptr;
    int rank = root->leftSize + 1;                 // 目前節點在其子樹中的名次
    if (k == rank) return root;
    if (k <  rank) return findKthSmallest(root->left,  k);
    return             findKthSmallest(root->right, k - rank);
}
B-5 參考答案圖

成大其他年份