資源描述:
《實(shí)驗(yàn)2:二叉樹、樹及應(yīng)用(最新)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、集美大學(xué)數(shù)握結(jié)構(gòu)課程實(shí)驗(yàn)報(bào)告課程名稱:數(shù)據(jù)結(jié)構(gòu)班級:軟件1373實(shí)驗(yàn)成績:指導(dǎo)教師:吳曉暉姓名:歐偉勇實(shí)驗(yàn)項(xiàng)目:實(shí)驗(yàn)2:二叉樹、樹及應(yīng)用學(xué)號:201342059074上機(jī)實(shí)踐日期:一、目的二義樹數(shù)據(jù)結(jié)構(gòu)及應(yīng)用堆及其應(yīng)用最優(yōu)樹及應(yīng)用二、實(shí)驗(yàn)內(nèi)容1.定義雙叉鏈表的二叉樹的數(shù)據(jù)結(jié)構(gòu)(包括結(jié)構(gòu)及基本操作)。(注:附屮有部分源碼,及進(jìn)一步的完成要求)2.定義最小堆及其數(shù)據(jù)結(jié)構(gòu),測試(1)采用數(shù)組53,17,78,9,45,65,87,23生成堆。(2)插入11,(2)刪除9(注附中有部分源碼及進(jìn)一步的完成要求)3.采用堆實(shí)現(xiàn)優(yōu)先級隊(duì)列,完成
2、優(yōu)先級隊(duì)列的入隊(duì)(即添加至堆尾,調(diào)整為堆)與出隊(duì)(刪除根,再調(diào)整為堆)。采用如下入隊(duì)順序?qū)崿F(xiàn)測試:53,17,78,9,45,65,87,23。4.實(shí)現(xiàn)一個哈夫曼樹5.輸出相應(yīng)的哈夫曼編碼并譯碼。(編程可選做)設(shè).?A、B、C、D、E權(quán)重分別為7,5,2,4,3要求對文本ADBACBEDACDAEBDBAEDAAB編碼并譯碼。請說明等長編碼時,編碼長度為多少,每個字符分別的編碼,該文本的編碼后的長度共多少?(必做)(1)等長編碼這種編碼方式的特點(diǎn)是每個字符的編碼長度相同(編碼長度就是每個編碼所含的二進(jìn)制位數(shù))。假設(shè)字符集只含有4個
3、字符A,B,C,D,用二進(jìn)制兩位表示的編碼分別為00,01,10,11。若現(xiàn)在有一段電文為:ABACCDA,則應(yīng)發(fā)送二進(jìn)制序列:00010010101100,總長度為14位。當(dāng)接收方接收到這段電文后,將按兩位一段進(jìn)行譯碼。這種編碼的特點(diǎn)是譯碼簡單且具有唯一性,但編碼長度并不是最短的。采用哈夫曼編碼后的每個字符的編碼分別是什么?文本的編碼后的長度共多少(必做)1101100001017*2+5*2+2*3+5*2+3*3=49編碼長度為3每個字符分別的編碼A000B001C010DOilE100F101該文本的編碼長度為3*22=6
4、6三、實(shí)驗(yàn)使用環(huán)境VC++6.0控制臺程序四、實(shí)驗(yàn)關(guān)鍵代碼與結(jié)果展示(部分截圖)1.#include〈iostream〉#include"binarytree.h”usingnamespacestd;intmain(){binarytreeP(’#’);binarytreeP1(P);^岀《”請輸入一棵二叉樹進(jìn)行測試:"?endl;//用字符型測試ABC##DE#G##F##H##bintreenode5、<6、父節(jié)點(diǎn)的某節(jié)點(diǎn):’’<*node=P.parent(Q,current);if(node!=NULL)cout?node-〉date;elsecout?"不存在父節(jié)點(diǎn)!";cout?endl;Bintree*T;T=CreateBinTree();cout?"非遞歸前序遍歷為:’’<7、derTraversal(T);cout?endl;cout?"非遞歸后序遍歷為:’’<date?endl;//if(P.equal(Q,Q))//cout?n”《endl;//else//cout?"bdn?endl;return0;}#include#include#includeusingnamespacestd;template<
8、typenameT>structbintreenode{Tdate;bintreenode*leftchild,*rightchild;bintreenode(){leftchild=NULL;rightchild=NULL;}bintree