山東大學數據結構(考試)——期末考試回憶版
2020年1月9日 8:30~10:30,山東大學軟件學院數據結構考試
試卷結構和題目:
一. 簡答題(20分)
- 給一個序列插入堆棧中,又給出兩個序列,問能否通過堆棧操作,得到這後給出的兩個序列
- 給一個二叉樹前序序列和中序序列,寫出後序序列
- 寫出將四維數組以列主映射方式映射到一維數組的映射公式
- 含有n個非葉節點的m階B-樹,計算出該樹非葉節點所含有的最少的關鍵字總數
- 給一個AOV圖,寫出拓撲排序算法的思想,並寫出圖中所有的拓撲序列
二. 應用題(50分)
- 散列表Hash(k) = k%11,散列表(線性探查)長度爲13,給一組序列:(1)構建出該散列表;(2)散列表中某2個元素的比較次數;(3)畫出刪除指定元素後的散列表
- 題中給出反對角矩陣的具體定義,要求畫出一個4x4的反對角矩陣的樣例,並寫出將其映射到一維數組的映射公式
- 給一個序列,構建出AVL搜索樹,並求出平均查找長度(每個節點出現的概率相等)
- 給一個序列,通過堆排序刪除2個最小元素,畫出刪除2個最小元素後的堆
- 給一個無向加權圖,使用Prim算法,從題中指定的頂點開始構建最小成本生成樹
三. 算法題(30分)
- 將一個數組中的奇數元素都移到偶數元素之前,要求有最優時間複雜度,寫出算法思想,並用C++實現,再求出時間複雜度
- 二叉樹的節點:lchild左指針域,data數據,rchild右指針域,構建一個單鏈表,將二叉樹的葉子節點從左至右連接起來,head爲此單鏈表頭節點,用葉節點的右指針域存放鏈表節點,寫出算法思想,並用代碼實現,並分析算法複雜度
個人認爲這次考試應該可以95+,至少對於我來說是比較簡單的,後面兩個算法題也是讀完就知道怎麼做。數據結構我是考前25天開始複習的,對於考試,複習只需要掌握思想,對,就是思想,代碼不用會背,但只有瞭解代碼才能熟悉思想,真正要學好數據結構,一定要鑽研代碼。
正如我之前在“山東大學計算機組成原理(考試)——期末考試回憶版”裏面說的一樣,考前多去其他班級的考前答疑,並向其他班同學交換一些資料。
最後預祝各位同學,期末取得好成績。