1. 程式人生 > >中國大學MOOC-陳越、何欽銘-資料結構-2016秋期中考試

中國大學MOOC-陳越、何欽銘-資料結構-2016秋期中考試

判斷題

1-1
演算法分析的兩個主要方面是時間複雜度和空間複雜度的分析。 (2分)
答案:T

1-2
將NN個數據按照從小到大順序組織存放在一個單向連結串列中。如果採用二分查詢,那麼查詢的平均時間複雜度是O(logN)O(logN)。 (3分)
答案:F

1-3
通過對堆疊S操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)。輸出的序列為:123。 (3分)
答案:F

1-4
所謂“迴圈佇列”是指用單向迴圈連結串列或者迴圈陣列表示的佇列。 (2分)
答案:F

1-5
在一棵二叉搜尋樹上查詢63,序列39、101、25、80、70、59、63是一種可能的查詢時的結點值比較序列。 (3分)
答案:F

1-6
將1、2、3、4、5、6順序插入初始為空的AVL樹中,當完成這6個元素的插入後,該AVL樹的先序遍歷結果是:4、2、1、3、5、6。 (3分)
答案:T

1-7
一棵有124個結點的完全二叉樹,其葉結點個數是確定的。 (3分)
答案:T

1-8
用鄰接表法儲存圖,佔用的儲存空間數只與圖中結點個數有關,而與邊數無關。 (3分)
答案:F

1-9
如果無向圖G必須進行兩次廣度優先搜尋才能訪問其所有頂點,則G中一定有迴路。 (3分)
答案:F

1-10
某二叉樹的前序和中序遍歷序列正好一樣,則該二叉樹中的任何結點一定都無右孩子。 (3分)

答案:F

選擇題

2-1
下列函式中,哪個函式具有最快的增長速度? (4分)
A、N

2logN
​B、N(logN)4
C、N3
D、NlogN2

答案:C

2-2
給定N\times NN×N的二維陣列A,則在不改變陣列的前提下,查詢最大元素的時間複雜度是:(4分)
​​A、O(N2)
​B、O(NlogN)
C、O(N)
D、O(N2logN)

答案:A

2-3
給定程式時間複雜度的遞推公式:T(1)=1T(1)=1,T(N)=2T(N/2)+NT(N)=2T(N/2)+N。則程式時間複雜度是:(4分)
​​A、O(logN)
​B、O(N)
C、O(NlogN)
D、O(N2)

答案:C

2-4
設h為不帶頭結點的單向連結串列。在h的頭上插入一個新結點t的語句是:(4分)
A、h=t; t->next=h->next;
B、t->next=h->next; h=t;
C、h=t; t->next=h;
D、t->next=h; h=t;

答案:D

2-5
若藉助堆疊將中綴表示式a+b*c+(d*e+f)*g轉換為字尾表示式,當讀入f時,堆疊裡的內容是什麼(按堆疊自底向上順序)? (4分)
A、+(*+
B、+(+
C、++(+
D、abcde

答案:B

2-6
若用大小為6的陣列來實現迴圈佇列,且當前front和rear的值分別為0和4。當從佇列中刪除兩個元素,再加入兩個元素後,front和rear的值分別為多少? (4分)
A、2和0
B、2和2
C、2和4
D、2和6

答案:A

2-7
三叉樹中,度為1的結點有5個,度為2的結點3個,度為3的結點2個,問該樹含有幾個葉結點? (4分)
A、8
B、10
C、12
D、13

答案:A

2-8
已知一棵二叉樹的先序遍歷結果是ABC,則以下哪個序列是不可能的中序遍歷結果: (4分)
A、ABC
B、BAC
C、CBA
D、CAB

答案:D

2-9
在一個用陣列表示的完全二叉樹中,如果根結點下標為1,那麼下標為17和19這兩個結點的最近公共祖先結點在哪裡(陣列下標)? (注:兩個結點的“公共祖先結點”是指同時都是這兩個結點祖先的結點) (4分)
A、8
B、4
C、2
D、1

答案:B

2-10
將6、4、3、5、8、9順序插入初始為空的最大堆(大根堆)中,那麼插入完成後堆頂的元素為: (4分)
A、3
B、5
C、6
D、9

答案:D

2-11
設一段文字中包含字元{a, b, c, d, e},其出現頻率相應為{3, 2, 5, 1, 1}。則經過哈夫曼編碼後,文字所佔位元組數為: (4分)
A、40
B、36
C、25
D、12

答案:C

2-12
在並查集問題中,已知集合元素0~8所以對應的父結點編號值分別是{ 1, -4, 1, 1, -3, 4, 4, 8, -2 }(注:-n−n表示樹根且對應集合大小為nn),那麼將元素6和8所在的集合合併(要求必須將小集合併到大集合)後,該集合對應的樹根和父結點編號值分別是多少? (4分)
A、1和-6
B、4和-5
C、8和-5
D、8和-6

答案:B

程式填空題

3-1
下列程式碼的功能是從一個大頂堆H的某個指定位置p開始執行下濾。

void PercolateDown( int p, PriorityQueue H )
{
   int  child;
   ElementType  Tmp = H->Elements[p];
   for ( ; p * 2 <= H->Size; p = child ) {
      child = p * 2;
      if ( child!=H->Size && H->Elements[child] < H->Elements[child+1])
         child++;
      if ( H->Elements[child] > Tmp )
         H->Elements[p]=H->Elements[child];
      else  break;
   }
   H->Elements[p] = Tmp; 
}

3-2
下列程式碼的功能是返回帶頭結點的單鏈表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;  
        New_head = Old_head;  
        Old_head = Temp; 
    }
    L->Next=New_head;
    return L;
}