文華學院
資料結構大型作業(課程設計)
2007-9-1
一、大型作業(課程設計)題目與內容
1.1二叉排序樹與平衡二叉排序樹基本操作的實現
1.用二叉鍊錶作儲存結構
(1)以回車('/n')為輸入結束標誌,輸入數列l,生成二叉排序樹t;
(2)對二叉排序樹t作中序遍歷,輸出結果;
(3)計算二叉排序樹t的平均查詢長度,輸出結果;
(4)輸入元素x,查詢二叉排序樹t,若存在含x的結點,則刪除該結點,並作中序遍歷(執行操作2);否則輸出資訊「無結點x」;
(5)判斷二叉排序樹t是否為平衡二叉樹,輸出資訊「ok!」/「no!」;
*(6)再用數列l,生成平衡二叉排序樹bt:當插入新元素之後,發現當前的二叉排序樹bt不是平衡二叉排序樹,則立即將它轉換成新的平衡二叉排序樹bt;
*(7)計算平衡的二叉排序樹bt的平均查詢長度,輸出結果。
2.用順序表(一維陣列)作儲存結構
(1)以回車('/n')為輸入結束標誌,輸入數列l,生成二叉排序樹t;
(2)對二叉排序樹t作中序遍歷,輸出結果;
(3)計算二叉排序樹t的平均查詢長度,輸出結果;
(4)輸入元素x,查詢二叉排序樹t:若存在含x的結點,則刪除該結點,並作中序遍歷(執行操作2);否則輸出資訊「無x」;
(5)判斷二叉排序樹t是否為平衡二叉樹,輸出資訊「ok!」/ 「no!」;
1.2.圖的基本操作的實現
(1)自選儲存結構,輸入含n個頂點(用字元表示頂點)和e條邊的圖g;
(2)求每個頂點的度,輸出結果;
(3)
(4)
(5)輸入頂點x,查詢圖g:若存在含x的頂點,則刪除該結點及與之相關連的邊,並作dfs遍歷(執行操作3);否則輸出資訊「無頂點x」;
(6)判斷圖g是否是連通圖,輸出資訊「ok!」/「no!」;
(7)如果選用的儲存結構是頂點陣列和鄰接矩陣,則用頂點陣列和鄰接矩陣的資料資訊生成圖g的鄰接表,即複製圖g,然後再執行操作(2);反之亦然。
*(8)自選圖的其它1種操作實現之。
1.3算術表示式求值
輸入乙個算術表示式,其中運算元必須為實數,運算子包括加、減、乘、除、小(圓)括號,試編寫程式實現:
(1)生成表示式二叉樹;
(2)根據表示式二叉樹求表示式的值;
(3)先序遍歷表示式二叉樹;
(4)中序遍歷表示式二叉樹,要求恢復必要的括號;
(5)後序遍歷表示式二叉樹,根據後序遍歷序列(逆波蘭式)求表示式的值;要求能用檔案形式存放表示式二叉樹,同時能從檔案中讀入儲存的表示式二叉樹。
1.4無向網及其應用
輸入若干個旅遊城市資訊,以及若任意兩個城市間通航(車),輸入票價,里程,試編寫程式實現:
(1)輸入建立以城市為頂點的該無向網(要求輸入的無向網是連通的);
(2)求解連通n個城市的總里程最小方案;
(3)任指定兩個城市a、b,求從a出發到b的最佳路線(如費用最低或距離最近);
*(4)從某城市出發,選擇若干城市旅遊,最後回到出發點,設計一種最佳方案;
*(5)用圖形方式顯示無向網,每次選取一種方案時,在圖上顯示方案圖。
注:*(4)、*(5)可選做,該題也可以某城市多個旅遊景點為背景。
1.5.雜湊表及其應用
建立乙個小型資訊管理系統(可以是圖書、人事、學生、物資、商品等任何資訊管理系統)。要求:
(1)使用雜湊查詢表儲存資訊;
(2)實現查詢、插入、刪除、統計、輸出等功能;
(3)嘗試使用多種雜湊函式和衝突解決方法,並通過實際執行測試給出自己的評價。
二、說明和要求
1.上述5個大型作業題任選2題完成,選作帶「*」號的內容;
2.每一種操作用c(或c++)函式實現;
3.「大型作業報告書」必須有下列所有內容:
(1)說明所完成的大型作業題目和內容;
(2)簡要說明所採用的資料結構及其儲存結構(約300個字);
(3)簡要說明演算法的設計思想(約800個字);
(4)若選作第1題,分析對比未平衡化的二叉排序樹和平衡化了的二叉排序樹的查詢效率(最好情況、最壞情況和平均情況的比較關鍵字的次數(約400個字);
(5)分析時間複雜度(約200個字);
(6)寫出心得和總結(約800個字);
(7)提交列印的程式清單,要求在關鍵位置加注釋;
(8)提交電子版c源程式清單;
(9)在「報告書」首頁寫上班號、學號(序號)、姓名。
這麼多東西哈....
Spark 巧用groupBy進行資料結構轉換
spark 巧用listbuffer進行資料格式轉換 與這篇正好相反,現在我們想把資料格式為 category item number 0 number 1 number 2 number 3 alphabet a alphabet b alphabet c alphabet d 轉換為 categ...
資料結構學習第九課(順序佇列)
2,順序佇列 2.1鍊錶基本框架 define init que size 8 typedef int data typedef struct seqqueue seqqueue 2.2建立乙個佇列 建立乙個佇列 seqqueue createseqqueue 2.3入隊 隊尾 入隊 隊尾 void...
資料結構 利用棧進行數制轉換的實現
程式如下 當程式執行後,比如數個1348,結果無限返回2,是什麼問題呢,跪求大佬。include include define stack init size 100 define stackincrement 10 typedef int elemtype typedef int status u...