文档介绍:数据构造(C语言版)实验报告(哈夫曼树)
数据构造(C语言版)实验报告(哈夫曼树)
数据构造(C语言版)实验报告(哈夫曼树)
《数据构造与算法》实验报告
o();//
经过手动输入的方式进行编码
voiddecode();//选择译码方式
voidopenfileDeco();//
的方式进行译码
voidinputDeco();//
经过手动输入的方式进行译码
voiddispHT(HuffmanTreenodeRoot,intlevel);//
以缩进方式输出哈夫曼树直观图
主函数:
主函数主要设计的是一个分支语句,让用户精选所实现的功能。
如下列图:
initHuffmanTree();初
始化哈夫曼树
Select()供
HuffmanCodin
g()调用
HuffmanCoding()构造
哈夫曼树
编码调用Encoding()译码调用Decode()dispHT()打印哈夫曼
树
数据构造(C语言版)实验报告(哈夫曼树)
数据构造(C语言版)实验报告(哈夫曼树)
数据构造(C语言版)实验报告(哈夫曼树)
三、详细设计
程序的头文件
#include<iostream>
#include<fstream>
#include<cstring>
usingnamespacestd;
ofstreamoutstuf;
typedefstruct{
unsignedintweight;
unsignedintparent,lchild,rchild;
}HTNode,*HuffmanTree;
typedefcharHuffmanCode;
HuffmanTreeHT=NULL;
intn=0;
HuffmanCodeHC=NULL;
char*ch=NULL;
voidinitHuffmanTree();
intopenfileInit();
intinputInit();
intHuffmanCoding(int*w);
voidSelect(intj,int&s1,int&s2);
voidencoding();
voidopenfileEnco();
voidinputEnco();
voiddecode();
voidopenfileDeco();
voidinputDeco();
voiddispHT(HuffmanTreenodeRoot,intlevel);
voidinitHuffmanTree(){//选择初始化哈夫曼树
intsel=0;
for(;;){
cout<<"\t*"<<endl;
cout<<"\t*"<<"字符集及权值本源\t\t\t\t\t*"<<endl;cout<<"\t*\t"<<"\t\t\t*"<<endl;cout<<"\t*\t"<<"\t\t\t\t*"<<endl;cout<<"\t*\t"<<"\t\t\t\t\t*"<<endl;
数据构造(C语言版)实验报告(哈夫曼树)
数据构造(C语言版)实验报告(哈夫曼树)
数据构造(C语言版)实验报告(哈夫曼树)
cout<<"\t*"<<endl;
cout<<"请输入您的选择"<<endl<<"";
cin>>sel;
if(sel==3)break;
switch(sel)
{case1:openfileInit();break;
case2:inputInit();break;
default:cout<<"对不起,您输入的数据有误!请重新输入。"<<endl;
}
};
}
数据构造(C语言版)实验报告(哈夫曼树)
数据构造(C语言版)实验报告(哈夫曼树)
数据构造(C语言版)实验报告(哈夫曼树)
intopenfileInit(){//
文件初始化哈夫曼树
该文件是为了测试