2017年851數據結構試題總結

1、簡答題[每小題5分,共20分]
1.抽象數據類型定義與特色。
抽象數據類型(abstract data type, ADT)是指一個數學模型以及定義在該模型上的一組操做。它一般是指對數據的某種抽象,定義了數據的取值範圍及其結構形式,以及對數據的操做的集合。特色:數據抽象,數據封裝。
2.圖的遍歷中,設置訪問標誌數組的做用。
防止節點被遺漏訪問和重複訪問。
3.什麼是關鍵路徑?求解關鍵路徑的意義何在。
路徑上各個任務所持續的時間之和被稱爲路徑長度,從起點到終點的全部路徑中,具備最長路徑長度的路徑稱爲關鍵路徑,關鍵路徑中的各個任務稱爲關鍵任務。意義:可以使花費總時間最短。
4.什麼是哈弗曼樹?其做用是什麼?
假設有n個權值{w1,w2,w3,…wn},構造一顆有n個節點的二叉樹,若樹的帶權路徑最小,則這棵樹稱做哈弗曼樹。
哈弗曼樹又稱爲最優二叉樹。哈弗曼樹是指具備相同節點的樹中,加權路徑長度最小的樹,是一種帶權路徑最短的最優二叉樹。
做用:進行哈弗曼編碼,用於無損數據壓縮。編碼以後的字符串的平均長度、指望值下降,從而達到無損壓縮數據的目的。node


2、分析題[每小題10分,共30分]
1.已知一棵徹底二叉樹第6層有6個葉子節點,該二叉樹最多有個節點?最少有多少個節點?給出簡單分析過程。
節點最多的狀況:該徹底二叉樹共有7層。1~6層爲滿二叉樹,第6層有6個葉子節點,其他26個是第7層的根節點。總結點數爲:1+2+4+8+16+32+26x2=115個。
節點最少的狀況:該徹底二叉樹共有6層。1~5層爲滿二叉樹,第6層只有6個葉子節點。總結點數爲:1+2+4+8+16+6=37個。算法

2.一個圖有n個頂點,e條邊。分析採用鄰接矩陣和鄰接表存儲時所須要的存儲空間。
3.設有10000個待排序的記錄關鍵字,須要用最快的方法選出其中最小的十個記錄關鍵字,則快速排序、簡單選擇排序、堆排序、直接插入排序、歸併排序中哪些排序方法效率較高,簡要說明理由。還有哪些適合該要求的高效排序方法。數組

用堆排序:最壞狀況下的時間複雜度爲O(log2n)。適用於記錄多的狀況,總共進行的關鍵字比較不超過4n。調整建新堆的比較次數不超過2log2n次(共不超4n+2klog2n)。編碼

用快速排序:最好狀況下的時間複雜度爲O(nlog2n),且快速排序在序列越無序的狀況下效率越高。spa

用歸併排序:時間複雜度爲O(nlog2n)。排序過程當中要選出前k個最大元素(k<<n)。必須將整個序列徹底排序,因此捨棄。設計

簡單選擇排序、直接插入排序的時間複雜度均爲O(n2),因此捨棄。3d


3、構造結果
1.N階對稱矩陣A,壓縮存儲在一維數組B中。假設存儲下三角矩陣,請分析對於A[i,j],其在B中的存儲位置的下標。(下標從1開始)。code

對於N階對稱矩陣,共需存儲數據個,即一維數組大小爲blog

先存儲下三角部分,再存儲對角線上的元素。排序

一維數組B[k](k從1開始),對應公式爲: 

2.用克魯斯卡爾算法,構造如圖所示連通網的最小生成樹(寫出每步結果)。

步驟:

代價爲:10 + 14 + 16 + 12 + 22 + 25 = 99

3.畫出11個結點的折半斷定樹,並計算等機率狀況下的查找成功的平均查找長度。

 

ASL = 11 + 22 + 34 + 44 = 33

4.某報文長度爲60個字符,統計發現共含6種字,符其出現的次數分別爲{5,1,3,6,8,21,16}。要求①爲該報文設計一種編碼,使其報文長度最短;②計算編碼後的報文長度。

 

5.對關鍵字序列{25,18,45,40,26,22,16,10}按從小到大排序,[1]寫出1趟快速排序的結果;[2]寫出用堆排序時創建的初堆。

[1]

先從後往前找出小魚基準數25的數,並與之交換

10 18 45 40 26 22 16 25

再從前日後找出大於基準數25的數,並與之交換

10 18 25 40 26 22 16 45 

10 18 16 40 26 22 25 45  

10 18 16 25 26 22 40 45  

10 18 16 22 26 25 40 45  

10 18 16 22 25 26 40 45   第一趟快速排序結果

[2]

首先根據序列構建一個徹底二叉樹

在徹底二叉樹的基礎上,從最後一個
4、編寫算法
1.已知帶頭結點的單鏈表L,編寫算法刪除值最大的結點。

 1 void delmaxnode(LinkList *&L)
 2 {
 3     LinkList *p = L->next, *pre = L, *maxp = p, *maxpre = pre;
 4     while(p != NULL)
 5     {
 6         if(maxp->data < p->data)
 7         {
 8             maxp = p;
 9             maxpre = pre;
10         }
11         pre = p;
12         p = p->next;
13     }
14     maxpre->next = maxp->next;
15     free(maxp);
16 }

 


2.二叉樹採用二叉鏈表方式存儲,編寫算法實現二叉樹的層次遍歷。


5、編寫算法
一棵二叉樹採用二叉鏈表方式存儲編,寫算法斷定給定的這棵二叉樹是否爲二叉排序樹。


6、編寫算法
某關鍵字序列按除留取餘法構建了哈希表,H(key)=key%P(P小於等於m),採用線性探測再散列解決衝突。編寫算法,對給定長度爲m、元素個數爲n的哈希表(m大於等於n),計算等機率狀況下查找成功的平均查找長度。

(未完待續)

相關文章
相關標籤/搜索