《C语言-哈夫曼编码实验报告》由会员分享,可在线阅读,更多相关《C语言-哈夫曼编码实验报告(18页珍藏版)》请在人人文库网上搜索。
1、C语言-哈夫曼编码实验报告11课程:题目:专业:班级:座号:姓名:福建工程学院课程设计数据结构 哈夫曼编码和译码 信息管理信息系统1002 班 15号 林左权2011年 6月 27日实验题目:哈夫曼编码和译码一、要解决的问题利用哈夫曼编码进行信息通信可以大大提高信道利 用率,缩短信息传输时间,降低传输成本。但是,这要 求在发送端通过一个编码系统对待传数据预先编码,在 接收端将传来的数据进行译码(复原)。对于双工信道(即 可以双向传输信息的信道),每端都需要一个完整的编/ 译码系统。二、算法基本思想描述:根据给定的字符和其中每个字符的频度,构造哈夫馒树,并输出字符集中每个字符的哈夫曼编码.将给定。
2、的字符串根据其哈夫曼编码进行编码,并进行相应的译码.三、设计1.数据结构的设计(1)哈夫曼树的表示设计哈夫曼树的结构体(htnode),其中包含权重、左右孩子、父母和要编码的字符。用这 个结构体(htnode)定义个哈夫曼数组(hfmt)。迷宫定义如下:typedef structint weight;int lchild;int rchild;int pare nt;char key;ht no de;typedef htnode hfmtMAXLEN;(2)对原始字符进行编码初始化哈夫曼树(inithfmt )。从终端读入字符集大小n,以及n个字符和n个权值, 建立哈夫曼树。并显示出每个字。
3、符的编码。1. void in ithfmt(hfmt t)对结构体进行初始化2. void inputweight(hfmt t)/ 输入函数3. void selectmin(hfmt t,int i,int *p1,int *p2) 选中两个 权值最小的函数4. void creathfmt(hfmt t)/创建哈夫曼树的函数5. void phfmnode(hfmt t)/对字符进行初始编码(3) 对用户输入的字符进行编码void en codi ng(hfmt t)/对用户输入的电文进行编码char r1000;用来存储输入的字符串int i,j;printf(nn请输入需要编码的字。
4、符:);gets(r);printf(编码结果为:);for(j=0;rj!=0;j+)for(i=0;i#i nclude #include #defi ne MAXLEN 100 typedef struct int weight; int lchild; int rchild;int pare nt; char key;ht no de;typedef htnode hfmtMAXLEN;int n;void in ithfmt(hfmt t) int i;prin tf(n);对结构体进行初始化prin tf(- printf(*n); printf(n请输入 n=);scan f(%。
5、d,&n); getchar();for(i=0;itj.weight)min 1=tj.weight;*p1=j;for(j=0;jtj.weight & j!=(*p1)/注意 j!=(*p1)min 2=tj.weight;*p2=j;void creathfmt(hfmt t)创建哈夫曼树的函数int i,p1,p2;in ithfmt(t);in putweight(t);for(i=n;i*刊-曲*/对轟1 21 译码【町退出馬籬:石蔚F退岀翰翳鑿隘Z输入需要嘗码的宇符串= 111110100 是:dchaNWiMKXKlifHKHltflflOfKJfKJt 址出扁 勺咅艮 H 羊可 B|88f j艮 出| *t*t*H*-*H*M_BHlH*H*H*L*HlH* 译码 5】退出六、心得体会:(略。