资源简介
哈夫曼编码与译码的c++实现,主要功能哈夫曼树的创建,可把数据转换为编码后存入文件,也可以对文件中的信息进行编码与译码,代码清晰整洁,源码内有详细的注释可辅助理解,功能符合课程设计的要求,并加以扩展。
代码片段和文件信息
/*更新*/
/*从文件读取数据*/
/*
测试数据
Hello World
1 1 3 3 2 1 1 2 1 3 1
010001011011100000110011100110001111001
*/
#include
#include
#include
using namespace std;
//typedef char ElementType;
typedef char ** HuffmanCode;
typedef struct
{
char data;
int weight;//节点的权值
int parentlchildrchild;//节点的双亲,左孩子,右孩子的下标
}HtNode*HuffmanTree;
typedef struct Node
{
char data;
struct Node *next;
}Node*DeNode;
void menu();
//创建哈夫曼树HTn个数据
bool CreatHuffmanTree(HuffmanTree &HTint n);
//在哈夫曼树HT中选择两个双亲域为0的权值最小的两个节点
void Select(HuffmanTree &HTint rangint &min1int &min2);
//根据哈夫曼树求哈夫曼编码
void CreatHuffmanCode(HuffmanTree HTHuffmanCode &HCint n);
//翻译报文
void TraverseData(HuffmanTree HTHuffmanCode &HCstring dataint n);
//译码
bool deHuffmanTree(HuffmanTree HTstring codeint n);
//用链表保存译码信息
void insert(char data);
DeNode Head;
int flag = 0;
int main()
{
Head = new Node;
Head->next = NULL;
while(1)
{
menu();
}
return 0;
}
void menu()
{
HuffmanTree HT;
HuffmanCode HC;
int n;
cout << “|-------------------------------------------|“< cout << “| 哈夫曼编码与译码 |“< cout << “| 【1】编码 |“< cout << “| 【2】译码 |“< cout << “| 【3】退出 |“< cout << “|-------------------------------------------|“< int option;
cout<<“请选择操作:“;
cin>>option;
if(1 == option)
{
flag = 1;
cout<<“输入叶子结点的个数:“;
cin>>n;
if(CreatHuffmanTree(HTn))
{
CreatHuffmanCode(HTHCn);
for(int i = 1;i <= n;i++)
{
int j = 0;
cout< while(HC[i][j] != ‘\0‘)
{
cout< j++;
}
cout< }
string data;
int t;
cout<<“\n【1】文件读取“;
cout<<“\n【2】现在输入“;
cout<<“\n请选择操作:“;
cin>>t;
if(1 == t)
{
ifstream infile(“数据.txt“ios_base::in);
if(!infile.is_open())
{
ofstream outfile(“数据.txt“);
outfile.close();
//cerr << “文件打开失败!“;
//exit(0);
}
if(infile.peek()==EOF)
{
cout << “\n无数据信息\n“;
return;
}
else
{
getline(infiledata);
}
}
if(2 == t)
{
cout<<“\n请输入翻译的数据:“;
//cin>>data;
fflush(stdin);
getline(cindata);//输入一行数据
}
cout<<“转码如下:\n“;
TraverseData(HTHCdatan);
}
}
if(2 == option)
{
if(0 == flag)
{
cout<<“\n请先构建哈夫曼树\n“;
return;
}
string code;
int t;
cout<<“\n【1】文件读取“;
cout<<“\n【2】现在输入“;
cout<<“\n请选择操作:“;
cin>>t;
if(1 == t)
{
ifstream infile(“编码.txt“ios_base::in);
if(!infile.is_open())
{
ofstream outfile(“编码.txt“);
outfile.close();
//cerr << “文件打开失败!“;
//exit(0);
}
if(infile.peek()==EOF)
{
cout << “\n无编码信息\n“;
return;
}
else
{
getline(infile c
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7856 2016-12-07 17:47 哈夫曼编码译码的设计与实现6.0.cpp
文件 1928733 2016-12-10 12:03 哈夫曼编码译码的设计与实现6.0.exe
文件 12 2016-12-09 10:44 数据.txt
文件 181760 2016-12-12 13:35 数据结构课程设计.doc
文件 16470 2016-12-09 12:28 流程图.PNG
文件 0 2016-12-09 10:54 编码.txt
相关资源
- 数据结构抽象性实验——关于B树的基
- [数据结构课程设计——C语言描述第
- C语言课程设计 《 运动会比赛计分系
- C语言课程设计之学生考勤管理系统
- C语言课程设计之实验室设备管理系统
- c语言课程设计报告 会员卡计费系统源
- 清华大学数据结构C语言版习题答案
- 计算机图形学 课程设计 作业
- 单片机课程设计-自行车里程计速度计
- C语言课程设计报告 代码 小学算术运
- 图的深度优先遍历C语言数据结构
- 哈夫曼编码系统C语言实现
- 数据结构大作业贪吃蛇和实验报告
- C++商店购物系统课程设计论文
- 医务室的模拟 c语言 数据结构
- 数据结构哈夫曼编码译码C语言版程序
- 基于数据结构c语言实现的银行叫号系
- 迷宫求解算法数据结构c语言
- 校园导游系统().zip
- C语言-哈夫曼编码实验报告
- 基于哈夫曼编码的文件压缩解压程序
- 数据结构——迷宫
- 循环队列c程序
- 学生信息管理系统,C语言,课设,附
- 史上最全经典数据结构算法c语言实现
- 老鼠走迷宫数据结构课程设计
- C语言课程设计——猜数字游戏
- C++ 课程设计 扫雷系统 报告+源代码
- 哈夫曼树的应用和实现 C语言
- C语言设计一元稀疏多项式课程设计
评论
共有 条评论