- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构集中上机
试验报告
学院: 计算机科学与技术 专业:计算机科学与技术
学号: 班级: 姓名:
2010-12-25
题目:哈弗曼编码
需求分析:
I:初始化。从文件读入字符集大小n,以及n个字符和n个权值,建立Huffman树,。
E:编码(encoding)。利用以建好的HuffmanTree(如不在内在,则从文件hfmzifu中读入),对用户给定文件中正文进行编码,然后将结果存入用户给定文件中。
D:译码(decoding)。利用已建好的HuffmanTree对输入的文件中的代码进行译码,结果存入用户给定文件中。
T:印HuffmanTree。将已在内在中的HuffmanTree以直观的方式显示在终端上。
详细设计
源文件:Huffmantree.cpp
函数有主函数main();求最小的权值minl(HuffmanTree.int i); 选择函数Silect (HuffmanTree t,int i,int *s1,int *s2);哈弗曼编码函数HuffmanCoding(HuffmanTree *HT,HuffmanCode *HC,int *w,int n);
源程序
#include iostream
#include fstream
#include cstring
using namespace std;
typedef struct
{
int weight;
int parent;
int lchild;
int rchild;
}HTNode,*HuffmanTree;
typedef char **HuffmanCode;
int minl(HuffmanTree t,int i);
void HuffmanCoding(HuffmanTree *HT,HuffmanCode *HC,int *w,int n);
void select(HuffmanTree t,int i,int *s1,int *s2);
//--------------------------------------------------------------------------
void main()
{
HuffmanTree HT;
HuffmanCode HC;
ifstream in(hfmzifu.txt);
int *w,n,i;
cout从文件hfmzifu.txt输入字符的个数,字符,权值,#代表空格endl;
inn;
char *ch;
ch=(char *)malloc((n+1)*sizeof(char));
w=(int *)malloc(n*sizeof(int));
for (i=0;in;i++)
{
inch[i+1];
inw[i];
}//给w赋值。
HuffmanCoding(HT,HC,w,n);//建哈弗曼树
cout--------------------------------------------------------endl;
cout请选择操作:endl;
cout 1:输出哈弗曼树;endl;
cout 2:从Myinput文件中读取字符然后编码存入codemyinput文件中;endl;
cout 3:从codemyinput读取编码输入到频幕上;endl;
cout 4:将codemyinput读取编码译码后存盘;endl;
cout 0:退出系统!!!!endl;
cout请输入你的选择:endl;
while (true)
{
int c;
cinc;
if (c==0)
{
cout退出系统!endl;
break;
}
while(c4||c0)
{
cout你输入有误请重新输入:endl;
cinc;
}
fstream file;
ofstream outfile;
ifstream printfile;
ifstream codefile;
ofstream Myoutput;
if(c==1)
{
cout哈弗曼树为:endl;
cout
文档评论(0)