数据结构(C语言版)实验报告(哈夫曼树) 联系客服

发布时间 : 星期五 文章数据结构(C语言版)实验报告(哈夫曼树)更新完毕开始阅读efbf6f70c77da26924c5b042

编码结果被存储在CodeFile.txt文件里

通过打开文件进行译码

译码结果被存储

通过打开encode.txt文件进行编码

编码结果同时被存储

通过自行输入文件进行译码

译码同时被存储 退出

七、 附录(源代码)

#include #include #include using namespace std; ofstream outstuf;

typedef struct{

unsigned int weight;

unsigned int parent,lchild,rchild; }HTNode,*HuffmanTree;

typedef char** HuffmanCode;

HuffmanTree HT=NULL; int n=0;

HuffmanCode HC=NULL; char *ch=NULL;

void initHuffmanTree(); int openfileInit(); int inputInit();

int HuffmanCoding(int *w); void Select(int j,int &s1,int &s2); void encoding(); void openfileEnco(); void inputEnco(); void decode();

void openfileDeco(); void inputDeco();

void dispHT( HuffmanTree nodeRoot, int level );

void initHuffmanTree(){ //选择初始化哈夫曼树 int sel=0; for(;;){

cout<<\ cout<<\ \字符集及权值来源\\t\\t\\t\\t\\t*\

cout<<\使用权值文件data.txt进行编码\\t\\t\\t*\ cout<<\自行输入字符集及权值\\t\\t\\t\\t*\ cout<<\返回上层\\t\\t\\t\\t\\t*\

cout<<\ cout<<\请输入您的选择\ \

cin>>sel;

if(sel==3) break; switch(sel)

{case 1:openfileInit();break; case 2:inputInit();break;

default:cout<<\对不起,您输入的数据有误!请重新输入。\ } }; }

int openfileInit(){ //通过打开的data.txt文件初始化哈夫曼树该文件是为了测试数据2 包涵26个字符 int *w=(int*)malloc(28*sizeof(int)); ch=(char*)malloc(28*sizeof(char)); n=27;

ifstream infile(\ if(!infile){

cerr<<\ exit(1); }

cout<<\ 权值文件中的信息(#代表空格)\ for(int i=1;infile.eof()==0;i++){ infile>>ch[i];

infile>>w[i]; } cout<

cout<<\ 字符:\

for(i=1;i<10;i++) cout<

for(i=1;i<10;i++) cout<

for(i=10;i<19;i++) cout<

for(i=10;i<19;i++) cout<

for(i=19;i<28;i++) cout<

for(i=19;i<28;i++) cout<

HuffmanCoding(w);

cout<<\ 各字符编码如下:\ for(i=1;i<=27;i++) {