信息论与编码实验报告(11)

2021-02-21 09:17

信息论与编码实验报告

for(i=0;i<n;i++) { //结点赋初值 huffnode[i].weight=m[i]; huffcode[i].sign=sign[i]; } //对n到2n-1节点编码 for(i=0;i<n-1;i++) {

m1=m2=100; x1=x2=0;

for(j=0;j<n+i;j++) //查找最小的两个节点x1和x2 {

if(huffnode[j].weight<=m1&&huffnode[j].parent==0) {

m2=m1; x2=x1; m1=huffnode[j].weight; x1=j; }

else if(huffnode[j].weight<=m2&&huffnode[j].parent==0) {

m2=huffnode[j].weight; x2=j; } }

huffnode[x1].parent=n+i; //定义x1和x2的父节点为n+i huffnode[x2].parent=n+i;

huffnode[n+i].weight=huffnode[x1].weight+huffnode[x2].weight; huffnode[n+i].lchild=x1; //新节点的左、右孩子分别为x1、x2 huffnode[n+i].rchild=x2; } //从叶子到根逆向求每个字符的哈弗曼编码 for(i=0;i<n;i++) { temp.position=n-1; c=i; p=huffnode[c].parent; while(p!=0) //如果p不是根节点则一直向上编码 { if(huffnode[p].lchild==c) //如果p节点的左孩子是c,则码字加1 temp.bit[temp.position]=1; else //否则码字加0 temp.bit[temp.position]=0; temp.position--; //记录当前码字存储位置 c=p; p=huffnode[c].parent; //重新定义c和p的指向


信息论与编码实验报告(11).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:防火检查记录表

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: