收藏 分享(赏)

huffman编码.ppt

上传人:gnk289057 文档编号:12025988 上传时间:2021-08-02 格式:PPT 页数:7 大小:46.50KB
下载 相关 举报
huffman编码.ppt_第1页
第1页 / 共7页
huffman编码.ppt_第2页
第2页 / 共7页
huffman编码.ppt_第3页
第3页 / 共7页
huffman编码.ppt_第4页
第4页 / 共7页
huffman编码.ppt_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、树与二叉树,Huffman编码,实现中需要用到的头文件,#include #include #include,Huffman树以及huffman编码的存储表示,typedef struct unsigned int weight; unsigned int parent,lchild,rchild; HTNode,*HuffmanTree; / 动态分配数组存储赫夫曼树 typedef char *HuffmanCode; / 动态分配数组存储赫夫曼编码表,select函数,void select(HuffmanTree t,int i,int ,void HuffmanCoding(Huff

2、manTree ,if (n=1) return; m = 2 * n - 1; HT = (HuffmanTree)malloc(m+1) * sizeof(HTNode); / 0号单元未用 for (i=1; i=n; i+) /初始化 HTi.weight=wi-1; HTi.parent=0; HTi.lchild=0; HTi.rchild=0; for (i=n+1; i=m; i+) /初始化 HTi.weight=0; HTi.parent=0; HTi.lchild=0; HTi.rchild=0; ,for (i=n+1; i=m; i+) / 建哈夫曼树 / 在HT1.

3、i-1中选择parent为0且weight最小的两个结点, / 其序号分别为s1和s2。 select(HT, i-1, s1, s2); HTs1.parent = i; HTs2.parent = i; HTi.lchild = s1; HTi.rchild = s2; HTi.weight = HTs1.weight + HTs2.weight; ,/- 从叶子到根逆向求每个字符的哈夫曼编码 - cd = (char *)malloc(n*sizeof(char); / 分配求编码的工作空间 cdn-1 = 0; / 编码结束符。 for (i=1; i=n; +i) / 逐个字符求哈夫曼编码 start = n-1; / 编码结束符位置 for (c=i, f=HTi.parent; f!=0; c=f, f=HTf.parent) / 从叶子到根逆向求编码 if (HTf.lchild=c) cd-start = 0; else cd-start = 1; HCi = (char *)malloc(n-start)*sizeof(char); / 为第i个字符编码分配空间 strcpy(HCi, / 释放工作空间 / HuffmanCoding,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报