山大資料結構實驗報告
山東大學軟體學院
《資料結構、演算法與應用》實驗指導書
一、實驗要求
採用良好的程式設計風格;關鍵操作要有註釋。
程式能夠執行,顯示執行結果。
二、 開發工具
Microsoft Visual C++
Eclipse IDE For C++
三、 實驗題目
實驗一 遞迴練習
一、實驗目的
熟悉開發工具的使用。
掌握遞迴的實現思想。
二、實驗內容
1、輸出n個整數的全排列。
2、輸出n個整數的所有子集。
實驗二 排序演算法
一、實驗目的
掌握各種排序方法的實現思想。
實驗內容
1、建立排序類。
2、提供操作:選擇排序、氣泡排序、插入排序、基數排序、快速排序、歸併排序。
3、*能夠顯示各種排序演算法的中間過程。
實驗三 線性表操作
實驗目的
掌握線性表的基本操作:插入、刪除、查詢。
掌握連結串列遍歷器的使用方法。
二、實驗內容
建立線性表類。線性表的儲存結構使用連結串列。
提供操作:自表首插入元素、刪除指定元素、搜尋表中是否有指定元素、輸出連結串列。
接收鍵盤錄入的一系列整數(例10,25,8,33,60)作為節點的元素值,建立連結串列。輸出連結串列內容。
輸入一個整數(例33),在連結串列中進行搜尋,輸出其在連結串列中的位置。如果不存在輸出0。
使用連結串列遍歷器實現連結串列的反序輸出。
建立兩個有序連結串列,使用連結串列遍歷器實現連結串列的合併。
實驗四 矩陣和散列表
一、實驗目的
掌握矩陣結構。
掌握散列表及其應用。
二、實驗內容
1、建立稀疏矩陣類,採用行主順序把稀疏矩陣對映到一維陣列中,實現稀疏矩陣的轉置和兩個稀疏矩陣的加法操作。
2、使用散列表設計實現一個字典,假設關鍵字為整數且D為961,在字典中插入隨機產生的500個不同的整數,實現字典的建立和搜尋操作。分別使用線性開型定址和連結串列雜湊解決溢位。
實驗五 堆疊和佇列的應用
一、實驗目的
掌握堆疊和佇列的使用。
二、實驗內容
1、計算數學表示式的值。
輸入數學表示式,輸出表達式的計算結果。數學表示式由單個數字和運算子“+”、“-”、“*”、“/”、“(、“)構成,例如 2 + 3 * ( 4 + 5 ) – 6 / 4。假定表示式輸入格式合法。
2、以一個 m*n的長方陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設計一個程式,對任意設定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結論。
迷宮根據一個迷宮資料檔案建立。迷宮資料檔案由一個包含0、1的矩陣組成。迷宮的通路可以使用通路上各點的座標序列進行展示(使用圖形展示最佳)。
實驗六 二叉樹操作
一、實驗目的
1、掌握二叉樹的基本概念,連結串列描述方法;遍歷方法。
二、實驗內容
建立二叉樹類。二叉樹的儲存結構使用連結串列。提供操作:前序遍歷、中序遍歷、後序遍歷、層次遍歷、計算二叉樹結點數目、計算二叉樹高度。對建立好的二叉樹,執行上述各操作。
接收鍵盤錄入的二叉樹前序序列和中序序列(各元素各不相同),輸出該二叉樹的後序序列。
3、二叉搜尋樹的構造以及二叉搜尋樹輸出。
實驗七 堆及其應用
一、實驗目的
1、掌握堆的基本概念,插入、刪除方法。掌握堆排序。
二、實驗內容
1、建立最大堆類。最大堆的儲存結構使用連結串列。提供操作:堆的插入、堆的刪除。堆的初始化。
2、接收鍵盤錄入的一系列整數,輸出其對應的最大堆、
3、堆排序。
*4、Huffman樹的構造。Huffman編碼。
實驗八 圖的操作
一、實驗目的
1、掌握圖的基本概念,描述方法;遍歷方法。
二、實驗內容
1、建立圖類。二叉樹的儲存結構使用鄰接矩陣或連結串列。提供操作:遍歷、BFS、DFS
2、對建立好的圖,執行上述各操作。
3、輸出生成樹。
*4、輸出最小生成樹。