资源简介
哈夫曼编码与译码的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
相关资源
- C语言课程设计
- 利用C++哈希表的方法实现电话号码查
- c语言电子商务系统
- 学校超市选址问题(数据结构C语言版
- 数据结构,迷宫问题C语言版源代码
- DSDEMO-C演示(数据结构C语言版 严蔚敏
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- 实验报告:数据结构长整数四则运算
- 宠物管理系统课程设计(源码+数据库
- 数据结构教程李春葆第五版书中例题
- c语言课程设计:客房登记系统源码
- 吕鑫vc6c++数据结构视频源码
- 数据结构教程李春葆第五版课后答案
- 李春葆课后习题答案(数据结构教材
- 8位竞赛抢答器的课程设计报告.docx
- 数据结构1800题 题+答案(全)
- 数据结构(C语言版)ppt课件,清华,
- c++常用游戏算法及数据结构设计
- 数据结构超全面复习导图
- VC++MFC课程设计的学生成绩管理系统
- 《Data Structures and Algorithm Analysis in C
- 数据结构C语言版教学笔记严蔚敏
- C++实现21点游戏
- c++课程设计学生管理系统浙工大源码
- 数据结构C语言版期末考试试题(有答
- 多功能计算器实现C++代码以及代码详
- C语言数据结构银行客户排队
- C语言实现栈操作
- 课程设计: MFC 学生信息管理系统
评论
共有 条评论