
代號:5432
頁次:4
-
2
11 如果針對以下的有向權重圖(directed weighted graph),我們希望利用鄰接矩陣(adjacency matrix)來表
示該圖的原始(也就是非經過任何處理的)資料,則下列 C語言的宣告何者是合理的?
int graph[8]; int graph[9]; int graph[4] [4]; int graph[5] [5];
12 假設我們針對以下數列進行由小到大的排序:[16, 10, 8, 20],而我們採用的演算法為選擇排序(selection
sort),則第一次執行的數字交換和所形成的數列為下列何者?
交換 10 和8,得到數列[16, 8, 10, 20] 交換 16 和8,得到數列[8, 10, 16, 20]
交換 16 和10,得到數列[10, 16, 8, 20] 交換 20 和8,得到數列[16, 10, 20, 8]
13 對兩個空的佇列(Queue)每次擇一依序加入(Enqueue)1、2、3、4、5、6六個元素,並任意穿插提取
(Dequeue)動作,則下列何種提取次序不可能發生(下列提取次序均為由左至右)?
241365 145263 246153 314265
14 假設圖(a)中的二元樹,其每一個節點以圖(b)中的 C語言結構實作。若我們呼叫圖(c)中的 unknown 程式並
傳人圖(a)中的根節點,則列印出來的字串為下列何者?
(a)
struct node
{ char data;
struct node *left;
struct node *right;
};
(b)
void unknown(struct node *p)
{ if (p != NULL)
{ unknown(p->left);
printf("%c",p->data);
unknown(p->right);
}
}
(c)
xyz zxy yzx xzy
15 下列何種資料結構,實現遞迴函數最為有效?
佇列 堆疊 鍵結串列 樹
16 下列何者為在最差情況下(worst case),於一個一般性的二元搜尋樹(binary search tree)上做搜尋、插
入、刪除動作的時間複雜度?
搜尋為 O(log n),刪除和插入為 O(n) 三者皆為 O(log n)
三者皆為 O(n) 搜尋和插入為 O(log n),刪除為 O(n)
17 平衡樹(Balanced tree)指的是左子樹與右子樹的何種特性相近?
高度 節點個數 寬度 葉節點個數
18 對一個有 12 個節點的二元搜尋樹(Binary Search Tree)作後序訪問(Postorder Traversal),並依序輸出
訪問節點的數值,其結果如下(次序由左至右):3, 4, 6, 5, 8, 15, 19, 18, 16, 12, 24, 20。在此樹中兩個節
點之間的路徑(Path)最多含有多少個邊(Edge)?
6 7 8 9
19 使用合併排序法(Merge Sort)對 n個數字排序,在最佳情況(best case)及最糟情況(worst case)下,
其時間複雜度(time complexity)為何?
最佳情況:Θ(n),最糟情況:Θ(n log n) 最佳情況:Θ(n log n),最糟情況:Θ(n log n)
最佳情況:Θ(n),最糟情況:Θ(n2) 最佳情況:Θ(n log n),最糟情況:Θ(n2)
20 關於時間複雜度的敘述,下列何者錯誤?
線性搜尋法(linear search)在最差情況下(worst case)之時間複雜度為 O(n)
氣泡排序(bubble sort)之時間複雜度為 O(n2)
二分搜尋法(binary search)在最差情況下(worst case)之時間複雜度為 O(n)
二分搜尋法(binary search)在最佳情況下(best case)之時間複雜度為 O(l)
21 程式中每當一個副程式(subroutine)被呼叫時,系統會為該副程式建立一個啟動紀錄(activation record)
以儲存相關資訊。請問一般我們會利用下列何種資料結構來儲存啟動紀錄,以方便副程式的呼叫、返回,
並有效率地使用記憶體空間?
堆積(heap) 堆疊(stack) 陣列(array) 集合(set)
22 有關於 C++語言,在程式裡宣告 int &A=B;,則下列敘述何者正確?
將A的位址指定給 B變數
若依序執行 A=3; B=4; C=A+B; 之後變數 C的結果為 7
A, B 其實為同一個位址的變數
A, B 為兩個不同變數,但 B的數值會複製給 A
1
4
23
10 7
76
9
z
x y