资源简介
有以下功能:
初始化 从终端读入字符集大小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 << “显示存储的哈弗曼树信息:“ << endl;
// cout << “权值 左孩子 右孩子 双亲“ << endl;
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() << HaffNode[i].weight << “ “;
qDebug() << HaffNode[i].lchild << “ “;
qDebug() << HaffNode[i].rchild << “ “;
qDebug() << HaffNode[i].parent << “ “;
qDebug() << HaffNode[i].inf ;
}
//写入文件
fstream outfile1;
outfile1.open(“C:\\hfmtree.txt“ ios::out | ios::trunc | ios::binary);//建立进行写入的文件
if (!outfile1) //没有创建成功则显示相应信息
{
qDebug() << “hfmtree.txt文件不能打开“ << endl;
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
相关资源
- mgn-mqt82.exe
- Trojan-Qt5-Windows-0.0.4.rar
- 酒店管理系统基于Qt Creator5)
- VisualStudioUninstaller vs卸载工具
- 组态王驱动开发包3.0.0.7(中文)
- 多窗口后台鼠标连点器
- 使用选择性重传协议实现UDP可靠通信
- VC 获得文件属性 获取文件的创建时
- 读者写者问题(读者优先,写者优先
- vtk QT做的三维地质可视化系统2of2
- 用VC 编写的仿QQ聊天室程序源代码
- Qt局域网聊天软件
- 外点法程序
- 外罚函数程序
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- 推箱子及人工智能寻路C 源代码
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- MUSIC算法c 实现
- C 餐厅叫号系统(QT平)
- 国际象棋c 完整版
-
ob
jectARX给Auto CAD加工具条 - QT 实现文件下载
- qt图像处理
- 画图程序MFC/VC/VC CRectTracker 串行化
- MFC网络编程实例
- c 课程设计 职工信息管理系统
- VC 游戏编程—附源代码
评论
共有 条评论