中國大學MOOC-陳越、何欽銘-數據結構-2020春期中考試(1)
判斷題
1-1 將1、2、3、4、5、6順序插入初始爲空的AVL樹中,當完成這6個元素的插入後,該AVL樹的先序遍歷結果是:4、2、1、3、5、6。 (3分)
1-2 如果無向圖G必須進行兩次廣度優先搜索才能訪問其所有頂點,則G中一定有迴路。 (3分)
1-3 將一棵完全二叉樹存於數組中(根結點的下標爲1)。則下標爲23和24的兩個結點是兄弟。 (3分)
1-4 在一棵二叉搜索樹上查找63,序列39、101、25、80、70、59、63是一種可能的查找時的結點值比較序列。 (3分)
1-5 算法分析的兩個主要方面是時間複雜度和空間複雜度的分析。 (2分)
1-6 用鄰接矩陣法存儲圖,佔用的存儲空間數只與圖中結點個數有關,而與邊數無關。 (3分)
1-7 在具有N個結點的單鏈表中,訪問結點和增加結點的時間複雜度分別對應爲O(1)和O(N)。 (3分)
1-8 通過對堆棧S操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)。輸出的序列爲:123。 (3分)
1-9 已知一棵二叉樹的先序遍歷結果是ABC, 則CAB不可能是中序遍歷結果。 (3分)
1-10 在用數組表示的循環隊列中,front值一定小於等於rear值。 (2分)
單選題
2-1 下列函數中,哪個函數具有最快的增長速度? (4分)
- N2logN
- N(logN)4
- N3
- NlogN2
C 答案正確
2-2 在並查集問題中,已知集合元素0~8所以對應的父結點編號值分別是{ 1, -4, 1, 1, -3, 4, 4, 8, -2 }(注:−n表示樹根且對應集合大小爲n),那麼將元素6和8所在的集合合併(要求必須將小集合併到大集合)後,該集合對應的樹根和父結點編號值分別是多少? (4分)
- 1和-6
- 4和-5
- 8和-5
- 8和-6
B 答案正確
2-3 三叉樹中,度爲1的結點有5個,度爲2的結點3個,度爲3的結點2個,問該樹含有幾個葉結點? (4分)
- 8
- 10
- 12
- 13
A 答案正確
2-4 先序遍歷圖示二叉樹的結果爲 (4分)
- A,B,C,D,H,E,I,F,G
- A,B,D,H,I,E,C,F,G
- H,D,I,B,E,A,F,C,G
- H,I,D,B,E,F,G,A,C
B 答案正確
2-5 設 n 是描述問題規模的非負整數,下列程序段的時間複雜度是:(4分)
x = 0;
while ( n >= (x+1)*(x+1) )
x = x+1;
- O(logn)
- O(n1/2)
- O(n)
- O(n2)
B 答案正確
2-6 對最小堆(小頂堆){1,3,2,12,6,4,8,15,14,9,7,5,11,13,10} 進行三次刪除最小元的操作後,結果序列爲:(4分)
- 4,5,6,7,8,9,10,11,12,13,14,15
- 4,6,5,13,7,10,8,15,14,12,9,11
- 4,6,5,12,7,10,8,15,14,9,13,11
- 4,5,6,12,7,10,8,15,14,13,9,11
C 答案正確
2-7 假設有5個整數以1、2、3、4、5的順序被壓入堆棧,且出棧順序爲3、5、4、2、1,那麼爲了獲得這樣的輸出,堆棧大小至少爲: (4分)
- 2
- 3
- 4
- 5
C 答案正確
2-8 帶頭結點的單鏈表h
爲空的判定條件是: (4分)
h == NULL;
h->next == NULL;
h->next == h;
h != NULL;
B 答案正確
2-9 循環順序隊列中是否可以插入下一個元素()。 (4分)
- 與隊頭指針和隊尾指針的值有關
- 只與隊尾指針的值有關,與隊頭指針的值無關
- 只與數組大小有關,與隊首指針和隊尾指針的值無關
- 與曾經進行過多少次插入操作有關
A 答案正確
2-10
設一棵非空完全二叉樹 T 的所有葉節點均位於同一層,且每個非葉結點都有 2 個子結點。若 T 有 k 個葉結點,則 T 的結點總數是:(4分)
- 2k−1
- 2k
- k2
- 2k−1
A 答案正確
2-11 設一段文本中包含字符{a, b, c, d, e},其出現頻率相應爲{3, 2, 5, 1, 1}。則經過哈夫曼編碼後,文本所佔字節數爲: (4分)
- 40
- 36
- 25
- 12
C 答案正確
2-12 若某圖的深度優先搜索序列是{V2, V0, V4, V3, V1},則下列哪個圖不可能對應該序列? (4分)
D 答案正確
程序填空題
5-1 下列代碼的功能是返回帶頭結點的單鏈表L的逆轉鏈表。
List Reverse( List L )
{
Position Old_head, New_head, Temp;
New_head = NULL;
Old_head = L->Next;
while ( Old_head ) {
Temp = Old_head->Next;
Old_head->Next=New_head (6分); //填空處
New_head = Old_head;
Old_head = Temp;
}
L->Next=New_head (6分); //填空處
return L;
}
作者: DS課程組
單位: 浙江大學
時間限制: 400 ms
內存限制: 64 MB
5-1 答案正確(12 分)
5-2 下列代碼的功能是將小頂堆H中指定位置P上的元素的整數鍵值下調D個單位,然後繼續將H調整爲小頂堆。
void DecreaseKey( int P, int D, PriorityQueue H )
{
int i, key;
key = H->Elements[P] - D;
for ( i = P (6分); //填空處
H->Elements[i/2] > key; i/=2 )
H->Elements[i]=H->Elements[i/2] (6分); //填空處
H->Elements[i] = key;
}
作者: 陳越
單位: 浙江大學
時間限制: 400 ms
內存限制: 64 MB
5-2 答案正確(12 分)
沖沖沖沖沖沖~