2020南京郵電大學Mooc—在線期末考試主觀卷

👇爲客觀卷部分,自取。
2020南京郵電大學Mooc—在線期末考試客觀卷
在這裏插入圖片描述
1 ( 20分 )
在這裏插入圖片描述
請對序列進行快速排序,寫出前5趟的排序過程,按照如下答題格式進行答題,答題時注意不要漏掉下劃線,下劃線標錯扣分。

答題格式:
第1趟:
第2趟:____________________________
第3趟:____________________________
第4趟:____________________________
第5趟:____________________________

參考答案:
在這裏插入圖片描述

2 ( 20分 )
已知英文字母集合 {A,B,C,D,E,F,G,H}及其權值集合{28,10,24,20,14,27,17,9},請給出以上英文字母的哈夫曼編碼,要求該編碼對應的哈夫曼樹上左分支編碼爲0,右分支編碼爲1,且任意結點的左孩子權值不大於右孩子權值。請按照以下格式答題。

答題格式:
A:____________ B:____________ C:____________
D:____________ E:____________ F:____________
G:____________ H:____________ WPL=____________

參考答案:
在這裏插入圖片描述
3 ( 20分 )
請用克魯斯卡爾算法畫出下圖的最小代價生成樹,注意按照給定的答題格式進行答題,給出最小代價生成樹的生成過程。

在這裏插入圖片描述
在這裏插入圖片描述
參考答案
在這裏插入圖片描述
4 ( 20分 )
給定一個長度爲11的散列表ht如下所示,採用雙散列法解決衝突,兩個散列函數分別爲:
h1(key)=key%11
h2(key)=key%9+1
請向散列表依次插入關鍵字爲71,24,56,89的集合元素,給出插入完成後的散列表。

在這裏插入圖片描述
參考答案:
在這裏插入圖片描述
5 ( 20分 )
請給出下圖的深度優先遍歷序列和寬度優先遍歷序列,注意圖上邊的權值代表邊的優先級(值越小則優先權越高),在遍歷過程中優先選擇權值大(即值小)的邊進行結點的訪問,不按照指定優先級規則進行遍歷的答案不得分。

在這裏插入圖片描述
答題格式:
深度優先遍歷序列(以9爲起點):_________________________________
寬度優先遍歷序列(以5爲起點):_________________________________

參考答案
在這裏插入圖片描述
6 ( 20分 )
向下圖二叉平衡樹依次插入關鍵字爲56,63,2,65,18的元素,請畫出二叉平衡樹的構造過程,注意需要畫出每插入一個關鍵字後的樹形,共計5個,答題時請按照如下格式進行答題。(數據結構B考生可跳過)

在這裏插入圖片描述
參考答案
在這裏插入圖片描述
7 ( 20分 )
已知稀疏矩陣A[8][7]中非零元個數爲8,稀疏矩陣如下所示:

0 49 0 0 0 0 0
35 0 0 0 0 0 0
0 0 0 0 0 11 0
0 0 0 0 42 0 0
0 0 0 0 19 0 0
0 32 0 0 0 0 0
0 0 0 0 91 0 0
0 0 0 0 0 89 0

請給出(1)該稀疏矩陣的行三元組表、(2)用於快速轉置的num數組和(3)k數組

參考答案
在這裏插入圖片描述

8 ( 20分 )
請完成下列算法,將兩個非空有序鏈表L1和L2逆序合併至新鏈表L。
例如給定兩個有序鏈表(默認升序):
3->4->6 和 2->7->9,逆序合併的結果是:9->7->6->4->3->2
單鏈表的類型定義如下:

typedef struct node
{
       ElemType element;
       struct Node *link;
}Node;
  
typedef struct
{
       Struct node * first;
       int n;
}SingleList;
  
SingleList* ReversedMerge(SingleList *L1, SingleList*L2, SingleList* L)
{
Init(L);//假設L非空,初始化新鏈表L
Node* p1 = L1->first;
Node* p2 = L2->first;
while(__________(1)___________)
{
       Node* p = L->first;
       if(p1->element<=p2->element)
       {
              Node * q = (Node*)malloc(sizeof(Node));
           q->element =______(2)_____;
              q->link = ____(3)____;
              ________(4)________;
              p1 = p1->link;
}
else
{
              Node * q = (Node*)malloc(sizeof(Node));
           q->element = ________(5)_________;
              q->link = p;
              L->first = q;
              p2 = p2->link;
}
}
while(p1!=NULL)
{
              Node * q = (Node*)malloc(sizeof(Node));
           q->element = p1->element;
              q->link = p;
              L->first = q;
              p1 = p1->link;
}
while(p2!=NULL)
{
Node * q = (Node*)malloc(sizeof(Node));
           q->element = p2->element;
              q->link = p;
              L->first = q;
              p2 = p2->link;
}
return &L;
}

參考答案

SingleList* ReversedMerge(SingleList *L1, SingleList*L2, SingleList* L)
{
Init(L);//假設L非空,初始化新鏈表L
Node* p1 = L1->first;
Node* p2 = L2->first;
while(__________p2!=NULL && p1!=NULL___________)
{
       Node* p = L->first;
       if(p1->element<=p2->element)
       {
              Node * q = (Node*)malloc(sizeof(Node));
           q->element =______p1->element_____;
              q->link = ____p____;
              ____L->first = q;____;
              p1 = p1->link;
}
else
{
              Node * q = (Node*)malloc(sizeof(Node));
           q->element = ____p2->element_________;
              q->link = p;
              L->first = q;
              p2 = p2->link;
}
}

9 ( 20分 )
請完成下列算法缺少的代碼塊,將兩個有序順序表L1和L2逆序合併至L(逆序合併的含義同上題)。

在這裏插入圖片描述
參考答案

if (L1->element[i1]>=L2->element[i2])
{
L->element[i] = L1->element[i1];
i1--;
i++;
}
else
{
L->element[i] = L2->element[i2];
i2--;
i++;
}
while(i1>=0)
{
L->element[i] = L1->element[i1];
i1--;
i++;
}
while(i2>=0)
{
L->element[i] = L2->element[i2];
i2--;
i++;
}

10 ( 20分 )
給定一棵二叉樹,請完成下列算法交換左右子樹。

void Exchange(BTree bt)
{ 
     (1)     ;
}
 
void Exchange (BTNode* t)
{
if(!t) return; 
BTNode* temp = t->LChild;
    (2)    ;
t->RChild = temp;
    (3)    ; 
    (4)    ; 
}

參考答案

void Exchange(BTree bt)
{
Exchange (bt->root);
}
void Exchange (BTNode* t)
{
if(!t) return;
BTNode* temp = t->LChild;
t->LChild = t->RChild;
t->RChild = temp;
Exchange(t->LChild);
Exchange(t->RChild);
}

關於南郵mooc 的作業已經收尾,後續會陸續上傳關於數據結構的整理的複習資料!,請需要的小夥伴關注一下動態!你的隨手鼓勵,是我不斷創作的最大動力!感謝🙏

👇爲客觀卷部分,自取。
2020南京郵電大學Mooc—在線期末考試客觀卷

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章