摘要: 源代码#include <stdlib.h>#include <stdio.h>#include <string.h>#include <malloc.h>struct HtNode{ double weight; int parent,lchild,rchild;};struct HtTree{ HtNode* ht; int root;};typedef struct HtTree* PHtTree;//构造有n个节点的哈夫曼树PHtTree Huffman (int n,int* w){ PHtTree pht; HtNode* ht; / 阅读全文
posted @ 2012-10-01 14:16 zhouqian7890 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 选出最小和次小p1=p2=0; //相关变量赋初值 min1=min2=1000;//相当于一个大数 for(j=0;j<n+i;j++) { if(pht->ht[j].parent==0) { if(pht->ht[j].weight<min1) { min1=pht->ht[j].weight; p1=j; } } } for(j=0;j<n+i;j++) { if(pht->ht[j].parent==0) { if((pht->ht[j].weight>min1)&&(pht->ht[j].weight< 阅读全文
posted @ 2012-10-01 14:15 zhouqian7890 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 哈夫曼编码是一种编码方式,属于可变字长编码(VLC)的一种,该编码方式是数学家D.A.Huffman于1952年提出的,是用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式,称之为最佳编码哈夫曼编码是广泛用于数据文件压缩的十分有效的编码方式,其压缩率通常在20%~90%之间,JPEG就是用哈夫曼编码压缩的任何一个字符的编码都不能使其他字符编码的前缀,否则译码时将产生二义性哈夫曼算法的构造思想及设计1.构造思想将所要编码的字符作为叶子节点,在文件中使用频率作为叶子节点的权值,以自底向上的方式、通过n-1次的"合并"运算后构造出最终所要求的树核心思想:让权值 阅读全文
posted @ 2012-10-01 14:12 zhouqian7890 阅读(1345) 评论(0) 推荐(0) 编辑