
代號:
頁次:
-
21 假設有兩個堆疊(stack)S1 與S2,一開始它們的內容都是空的(empty)。執行下列的演算法後,
請問 S2 的內容為何?(由左至右的順序代表堆疊由底部到上面的順序)
Push (S1, 6)
Push (S1, 2)
Push (S1, 4)
Push (S2, 8)
Push (S2, 9)
x = Pop (S1)
While (not empty(S1)) Push (S2, Pop(S1))
Push (S2, x)
8, 9, 4, 2, 6 8, 9, 2, 6, 4 8, 9, 2, 4, 6 8, 9, 6, 2, 4
22 某二元樹(binarytree)的前序走訪(preorder traversal)為 FBADCEGKHJ,中序走訪(inorder traversal)
為ABCDEFGHJK,請問此二元樹的廣度優先走訪(breath-first traversal)為何?
FBGCADKJEH FBGKAEDCHJ FBGADKCEHJ FBAGDHKJCE
23 下列有關資料排序的敘述,何者錯誤?
氣泡排序法與插入排序法的平均運算時間複雜度都是 O(n2)
堆積排序法(heap sort)與快速排序法(quick sort)屬於不穩定排序(unstable sorting)法
合併排序法(merge sort)與選擇排序法(selection sort)的平均運算時間複雜度都是 O(n*log(n))
快速排序法(quick sort)的最壞運算(worst case)時間複雜度是 O(n2)
24 下列程式是 C語言的函式(function),請問呼叫 C(5,4)的結果為何?呼叫 C(5,4)後,此 C函式總共
被呼叫幾次才計算出結果?
int C (int n, int k)
{if((k==0) || (n==k) return 1;
else return (C(n-1, k)+C(n-1, k-1));
}
5, 8 次4, 7 次5, 9 次6, 8 次
25 請問下列的程式執行結束後,陣列 grade 的內容為何?
int grade[4] = {80, 70, 60, 50};
int main (void)
{int i, j, temp;
for (i = 2; i >= 0; i--)
for (j = 0; j <= i; j++)
{if (grade[j] > grade[j+1]);
{ temp = grade[j];
grade[j] = grade[j+1];
grade[j+1] = temp; }
}
return 0;
}
grade[4] = {50, 60, 70, 80} grade[4] = {80, 70, 60, 50}
grade[4] = {50, 70, 60, 80} grade[4] = {50, 60, 80, 70}
26 在課程系統中包含學生、課程、老師的實體關聯圖中,學生可以選擇多門課程,老師可以開設多門課
程。假設一門課只由一位老師開課,依此,學生和課程的數量關係為何?
1對11對多 多對 1多對多