資源簡介
本程序已在visual stdio2008上調試成功。
赫夫曼樹的c++win32控制臺下的源程序。代碼簡潔,容易理解。

代碼片段和文件信息
??#include??????
??#include??????
??#include??????
??#include??????
????
??using???namespace???std???;???
????
??typedef???struct???
??{???
??????????unsigned???int???weight;?????//結點權值???
??????????unsigned???int???parentlchildrchild;???//結點的父指針,左右孩子指針???
??}HTNode*HuffmanTree;???????????????//動態分配數組存儲哈夫曼樹???
????
??typedef???char???**HuffmanCode;???//動態分配數組存儲哈夫曼編碼表???
????
????
??HuffmanTree???HT;?????//哈夫曼樹HT???
??HuffmanCode???HC;?????//哈夫曼編碼表HC???
??unsigned???int???*w;???//w存放葉子結點權值???????
??char???*???source_code???;//source_code???存放原始碼?????
????
??void???CreateHuffmanTree(HuffmanTree???&unsigned???int*int???);???//生成一棵哈夫曼樹???
????
??void???HuffmanCoding(HuffmanTreeHuffmanCode???&int???);???????????????//對哈夫曼樹進行編碼???
????
??void???PrintHuffmanCode(HuffmanCodeunsigned???int*int);???????????//顯示哈夫曼編碼???
????
??void???Select(HuffmanTreeintint&int&);???//在數組中尋找權值最小的兩個結點???
????
??int???main()???
??{???
??int???ni;???????????????????//n是哈夫曼樹葉子結點數???
??char???choose=‘y‘;???//用于選擇程序是否退出?????
??//程序解說???
??printf(“本程序將演示構造哈夫曼樹.\n“);???
??printf(“首先輸入葉子結點數目.\n例如:2\n“);???
??printf(“然后輸入原始碼以及權值.\n“);???
??printf(“第1個原始碼及其權值???:“);???
??printf(“a???5\n“);???
??printf(“第2個原始碼及其權值???:“);???
??printf(“b???3\n“);???
??printf(“程序會構造一棵哈夫曼樹并顯示哈夫曼編碼.\n“);???
??cout<<“權值“<<“??????????“<<“原始碼“<<“??????????“<<“哈夫曼編碼“< ??printf(“???5????????????a????????????????1\n“);???
??printf(“???3????????????b????????????????0\n“);???
??putchar(‘\n‘);???
??putchar(‘\n‘);???
????
??while(choose!=‘N‘&&choose!=‘n‘)???
??????????????{???
????????????????printf(“請輸入葉子結點數目:“);???
????????????????scanf(“%d“&n);???????//輸入葉子結點數???
??????????????????
????????????????if(n<=1)???
??????????????????{printf(“該數不合理!\n“);continue;}???
????????????????w=(unsigned???int*)malloc(n*sizeof(unsigned???int));???//開辟空間存放權值???
????????????????source_code???=???(char???*)malloc(n*sizeof(char));???????//開辟空間存放原始碼?????
????????????????//printf(“請輸入各原始碼以及權值???:\n“);?????
????????????????for(i=0;i ??????????????????{???
??????????????????????????printf(“第%d個原始碼及其權值???:“i+1);???
??????????????????????????cin>>source_code[i];?????????????????????//輸入原始碼?????
??????????????????????????cin>>w[i];???????????????????????????????????????//輸入各葉子結點權值???
????????????????????????????
??????????????????}???????????
????????????????CreateHuffmanTree(HTwn);???????????????//生成哈夫曼樹???
????????????????HuffmanCoding(HTHCn);?????????????????????//進行哈夫曼編碼???
????????????????putchar(‘\n‘);???
????????????????PrintHuffmanCode(HCwn);?????????????????//顯示哈夫曼編碼???
????????????????printf(“哈夫曼樹構造完畢,還要繼續嗎?(Y/N)“);???
????????????????scanf(“???%c“&choose);???
????????????}???
??}???
????
??void???CreateHuffmanTree(HuffmanTree???&HTunsigned???int???*wint???n)???
??{//w存放n個結點的權值,將構造一棵哈夫曼樹HT???
??int???im;???
??int???s1s2;???
??HuffmanTree???p;???
??if(n<=1)???return;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????44032??2010-05-09?11:15??HuffmanTree\Debug\HuffmanTree.exe
?????文件?????417056??2010-05-09?11:15??HuffmanTree\Debug\HuffmanTree.ilk
?????文件?????592896??2010-05-09?11:15??HuffmanTree\Debug\HuffmanTree.pdb
?????文件???????8306??2010-05-09?11:15??HuffmanTree\HuffmanTree\Debug\BuildLog.htm
?????文件????????663??2010-05-09?11:13??HuffmanTree\HuffmanTree\Debug\HuffmanTree.exe.em
?????文件????????728??2010-05-09?11:13??HuffmanTree\HuffmanTree\Debug\HuffmanTree.exe.em
?????文件????????621??2010-05-09?11:15??HuffmanTree\HuffmanTree\Debug\HuffmanTree.exe.intermediate.manifest
?????文件??????52468??2010-05-09?11:15??HuffmanTree\HuffmanTree\Debug\HuffmanTree.obj
?????文件?????????65??2010-05-09?11:15??HuffmanTree\HuffmanTree\Debug\mt.dep
?????文件?????166912??2010-05-09?11:15??HuffmanTree\HuffmanTree\Debug\vc90.idb
?????文件?????217088??2010-05-09?11:15??HuffmanTree\HuffmanTree\Debug\vc90.pdb
?????文件???????7871??2010-05-09?11:47??HuffmanTree\HuffmanTree\HuffmanTree.cpp
?????文件???????3931??2010-05-09?11:07??HuffmanTree\HuffmanTree\HuffmanTree.vcproj
?????文件???????1427??2010-05-09?11:47??HuffmanTree\HuffmanTree\HuffmanTree.vcproj.宋二偉歡迎您-PC.宋二偉歡迎您!!!.user
?????文件????1149952??2010-05-09?11:47??HuffmanTree\HuffmanTree.ncb
?????文件????????899??2010-05-09?11:05??HuffmanTree\HuffmanTree.sln
????..A..H.??????8192??2010-05-09?11:47??HuffmanTree\HuffmanTree.suo
?????目錄??????????0??2010-05-09?11:15??HuffmanTree\HuffmanTree\Debug
?????目錄??????????0??2010-05-09?11:13??HuffmanTree\Debug
?????目錄??????????0??2010-05-09?11:47??HuffmanTree\HuffmanTree
?????目錄??????????0??2010-05-09?11:13??HuffmanTree
-----------?---------??----------?-----??----
??????????????2673107????????????????????21
評論
共有 條評論