哈夫曼算法——数据结构课程设计

假设某文本文档只包含26个英文字母,应用哈夫曼算法对该文档进行压缩和解压缩操作,使得该文档占用较少的存储空间

这里实现了
http://www.cnblogs.com/daoluanxiaozi/archive/2011/12/26/2302464.html

私聊我我,我给你代码,还可以显示哈夫曼杈~

这里是树和二叉树的实验

define X 401 # define Y 15/*哈夫曼树的长度*/

typedef struct ptree//定义哈夫曼结点类型
{struct ptree lchild;//左指针
struct ptree *rchild;/
右指针*/
int w;/*w存储节点权值*/
char zha[2];//储存当前节点的字母或数字 字符 如果不是叶子 则为'<'

}Ptree,*Optree;
int shu=0;
char ma[X][Y],b[Y]; //X为编码的个数有多少种字母就是X Y为编码长度
int bianma(Optree p,int a) //初始化a=sum=0;对哈夫曼进行编码的函数
{ int static c=0; //设置静态变量c
if(p) { if(p->lchild) //是左侧
{b[a]='0'; //左零
bianma(p->lchild,a+1); //继续遍历
}
if(p->rchild)
{
b[a]='1'; //右一
bianma(p->rchild,a+1); //继续遍历
}
if(p->zha[0]!='<') //如果是树叶则一个字符编码结束
{
b[a]='\0';
strcat(ma[shu++],b);
printf("%-13s\"%c\"\n",b,p->zha[0]); //输出编码和字符
c+=a*p->w; //计算权值
}
}
return c; //返回静态变量即总权值
}

http://download.csdn.net/detail/sun1021873926/9730076