1. 程式人生 > >山大資料結構實驗報告

山大資料結構實驗報告

山東大學軟體學院

《資料結構、演算法與應用》實驗指導書

 

一、實驗要求

採用良好的程式設計風格;關鍵操作要有註釋。

程式能夠執行,顯示執行結果。

 

二、 開發工具

  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、輸出最小生成樹。