扫码加入训练营

牢记核心词

学习得礼盒

计算机考研:数据结构常用算法精析(6)

2013-12-11 14:35:35来源:新东方在线编辑

  求Huffman编码的算法:

  typedef struct

  { char bits[n+1]; //存放一个字符的Huffman编码

  int start; //存放该字符编码的最后一个位置

  char ch; //待编码字符//

  }ctype;

  void Huffmcode(ctype code[n+1]) //求n个字符的Huffman编码的算法//

  {

  int i, j, p, s; huffm HT[m+1]; //H树存储空间//

  ctype md; //存放当前编码的变量//

  for (i=1;i<=n; i++) //读入待编码的字符//

  HT[i].data=code[i].ch=getchar( );

  //从叶子到根逆向求每个字符的哈佛满编码

  HuffmanTree(HT); //构造H树//

  for (i=1;i<=n;i++) //求n个字符的Huffman编码//

  {

  md.ch=code[i].ch;

  md.start=n-1; //就算是单支树最多也就是 n-1

  s=i; //第i个字符地址(或下标)Þs//

  p=HT[i].parent; //p为s之父结点地址//

  while (p!=0) //p存在时//

  {

  md.start-- ;

  if (HT[p].Lchild= =s)

  md.bits[md.start]=‘0’; //左走一步为‘0’//

  else

  md.bits[md.start]=‘1’ ; //右走一步为‘1’//

  s=p;

  p=HT[p].parent; //求下一位//

  }

  strcpy(code[i],md) ; //存入第i字符的编码//

  }

  }

考研公开课小程序

本文关键字: 计算机 考研 数据结构

考研英语核心词汇营

背词+听课+练习+督学,学习得礼盒

更多资料
更多>>
更多内容

关注新东方在线考研服务号

获得21考研真题及答案解析

1. 打开手机微信【扫一扫】,识别上方二维码;
2.点击【关注公众号】,获取资料大礼包。

近10年考研真题及答案免费下载
更多>>
更多公开课>>
更多>>
更多资料