資源簡介
有以下功能:
初始化 從終端讀入字符集大小n及n個字符和m個權值,建立哈夫曼樹,并將它存于文件hfmtree中
編碼 利用已建好的哈夫曼樹(如不在內存,則從文件hfmtree中讀入),對文件tobetrans中的正文進行編碼,然后將結果存入文件codefile中
解碼 利用已建好的哈夫曼樹將文件codefile中的代碼進行譯碼,結果存入文件textfile中
打印 將文件codefile以緊湊格式顯示在終端上,每行50個代碼。同時將此字符形式的編碼文件寫入文件codeprint中
打印哈夫曼樹 將已在內存中的哈夫曼樹以直觀的方式(樹或凹入表形式)顯示在終端上,同時將此字符形式的哈夫曼樹寫入文件treeprint中
附帶詳細的設計報告(最后的課程設計等級被評定為優秀)

代碼片段和文件信息
#include?“huffman.h“
#include?“qdebug.h“
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
Huffman::Huffman()
{
}
void?Huffman::Creat_Haffmantree(int?&nQString?*listt1int?*listt2HNodeType?*&hhh){
????HNodeType?*HaffNode?=?new?HNodeType[2?*?n?-?1];
????int?i?j;
????int?m1?m2?x1?x2;
????for?(i?=?0;?i<2?*?n?-?1;?i++)
????{
????????HaffNode[i].weight?=?0;
????????HaffNode[i].parent?=?-1;
????????HaffNode[i].lchild?=?-1;
????????HaffNode[i].rchild?=?-1;
????????HaffNode[i].inf?=?“0“;
????}
????for?(i?=?0;?i ????{
?????????HaffNode[i].inf=listt1[i];
?????????HaffNode[i].weight=listt2[i];
????}
????for?(i?=?0;?i ????{
????????m1?=?m2?=?Maxvalue;
????????x1?=?x2?=?0;
????????for?(j?=?0;?j ????????{
????????????if?(HaffNode[j].parent?==?-1?&&?HaffNode[j].weight ????????????{
????????????????m2?=?m1;
????????????????x2?=?x1;
????????????????m1?=?HaffNode[j].weight;
????????????????x1?=?j;
????????????}
????????????else
????????????{
????????????????if?(HaffNode[j].parent?==?-1?&&?HaffNode[j].weight ????????????????{
????????????????????m2?=?HaffNode[j].weight;
????????????????????x2?=?j;
????????????????}
????????????}
????????}
????????//將找出的最小和次小合并,創造其父結點
????????HaffNode[x1].parent?=?n?+?i;
????????HaffNode[x2].parent?=?n?+?i;
????????HaffNode[n?+?i].weight?=?HaffNode[x1].weight?+?HaffNode[x2].weight;
????????HaffNode[n?+?i].lchild?=?x1;
????????HaffNode[n?+?i].rchild?=?x2;
????????HaffNode[n?+?i].inf?=?““;
????}
// cout?<“顯示存儲的哈弗曼樹信息:“?<// cout?<“權值?左孩子?右孩子?雙親“?<????QString?aa=“哈夫曼樹的信息(字符信息、左孩子、右孩子、權值、父節點):“;
????fstream?file2;
????file2.open(“C:\\treeprint.txt“ios::out|?ios::binary);
????if(!file2){
????????qDebug()<<“treeprint.txt文件不能打開!\n“;
????????abort();
????}
????else{file2< ????????for(int?a=0;a<2*n-1;a++){
?????????????file2< ?????????????file2< ?????????????file2< ?????????????file2< ?????????????file2< ????????}
????}
????file2.close();
????hhh=HaffNode;
????for?(i?=?0;?i<2?*?n?-?1;?i++)
????{
????????qDebug()?<????????qDebug()?<????????qDebug()?<????????qDebug()?<????????qDebug()?<????}
????//寫入文件
????fstream?outfile1;
????outfile1.open(“C:\\hfmtree.txt“?ios::out?|?ios::trunc?|?ios::binary);//建立進行寫入的文件
????if?(!outfile1)?//沒有創建成功則顯示相應信息
????{
????????qDebug()?<“hfmtree.txt文件不能打開“?<????????abort();
????}
????for?(i?=?0;?i<2?*?n?-?1;?i++)?//將內存中從HaffNode[i]地址開始的sizeof(HaffN
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????311027??2017-02-21?15:15??ff\b2.jpg
?????文件????????222??2017-02-24?17:09??ff\b2.qrc
?????文件?????429685??2017-02-22?17:47??ff\B22.png
?????文件??????25655??2017-02-20?19:23??ff\back.jpg
?????文件?????218440??2017-02-21?14:44??ff\background.jpg
?????文件?????????93??2017-02-24?17:10??ff\background.qrc
?????文件???????5756??2017-02-23?20:10??ff\button.png
?????文件??????20591??2017-02-23?20:54??ff\button2.png
?????文件????????618??2017-02-27?23:52??ff\ff.pro
?????文件??????18472??2017-03-02?19:39??ff\ff.pro.user
?????文件???????9307??2017-03-01?18:50??ff\huffman.cpp
?????文件????????847??2017-03-01?14:57??ff\huffman.h
?????文件?????????90??2017-02-21?14:27??ff\image.qrc
?????文件??????19156??2017-03-01?15:14??ff\leef.png
?????文件??????19825??2017-03-01?15:56??ff\leef2.png
?????文件???????1094??2017-03-01?21:02??ff\main.cpp
?????文件???????7191??2017-03-02?19:39??ff\mainwindow.cpp
?????文件????????725??2017-03-01?16:52??ff\mainwindow.h
?????文件???????5398??2017-02-24?13:06??ff\mainwindow.ui
?????文件????????345??2017-02-27?19:53??ff\mydialog.cpp
?????文件????????326??2017-02-24?19:33??ff\mydialog.h
?????文件???????1202??2017-02-27?19:02??ff\mydialog.ui
?????文件???????4821??2017-03-02?19:39??ff\mytree.cpp
?????文件????????348??2017-03-01?11:30??ff\mytree.h
?????文件????????778??2017-03-01?16:25??ff\mytree.ui
?????文件??????????2??2017-02-21?14:30??ff\ok.cpp
?????文件??????26380??2017-02-21?14:23??ff\ok.jpg
?????文件?????????44??2017-02-24?17:10??ff\ok.qrc
?????文件????????180??2017-02-28?18:47??ff\queue.cpp
?????文件????????730??2017-02-28?20:28??ff\queue.h
............此處省略11個文件信息
- 上一篇:ueditor for bos
- 下一篇:王放912000720220.zip
評論
共有 條評論