77范文网 - 专业文章范例文档资料分享平台

自适应Huffman压缩码的生成(2)

来源:网络收集 时间:2012-08-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

  (三)交换当前结点与所属块的最大结点 
  当HighInBlock函数返回的不是 -1 就必须交换当前结点与所属块的最大结点,保证兄弟属性。 
  (四)对当前字符进行编码 
  从输入流中得到一个字符,若以前出现过该字符,则对该字符进行编码,并判断该字符是否是所属块的最大结点,否就交换当前结点与最大结点;若以前没有出现该字符,则生成两个结点,一个结点用于保存该字符,另一个用做逸出码结点NYT,并这两个结点的父结点为原逸出码结点NYT,输出逸出码及原字符。在这里我们用了code这个结构来保存一个字符的编码。
  程序流程过程如下: 
  1、 从字符输入流中,取出一个字符; 
  2、 判断该字符以前是否出现过? 
  3、否,用新的NYT及字符结点代替原NYT,输出逸出码及原字符,并使原NYT及字符结点的权值赋为一,改变当前结点为原NYT结点; 
  4、是,输出该字符的编码,判断该字符是否是所属块的最大结点?否,交换该字符结点与最大结点,改变当前结点为最大结点,并是当前结点的权值加一。 
  (五)更新Huffman树结构 
  当从输入流中取出一个字符并对其编码后,Huffman树的权值发生了变化,这就要更新Huffman树,在程序实现上用了变量newplace 保存了需要更新结点权值的位置,当该结点不是根结点就递归是其父结点的权值加一。 
  程序流程如下: 
  1、 当前结点是否为根结点?是,结束;否,转2; 
  2、改变当前结点为其父结点; 
  3、判断该结点是所属块的最大结点?是,转4;否,交换当前结点与最大结点; 
  4、当前结点的权值加一,转1。 
   
  四、对输入字符流进行压缩 
   
  对字符进行压缩,实际上对字符编码和更新Huffman树的过程。 
  程序流程如下: 
  (一)初始化Huffman树; 
  (二)是否遇到结束符’\0’,否,转3;否则就结束; 
  (三) 对字符进行编码; 
  (四) 更新Huffman树; 
  (五)读下一个字符,转2。    void CAdaptiveHuffman::OnCompress() 
  { 
  //原文本编辑框的内容赋给sAdapOriginalText 
  GetDlgItemText(IDC_Adap_OriginalText,sAdapOriginalText); 
  char m_sAdapOriginalText[32767]; 
  //sAdapOriginalText的内容赋给m_sAdapOriginalText 
  strcpy(m_sAdapOriginalText,(LPSTR)(LPCTSTR)sAdapOriginalText); 
  int C=0; 
  char ch; 
  ch=m_sAdapOriginalText[C]; 
  adapstr.Format(""); 
  InitHuffman();//初始化Huffman树 
  while(ch!=’\0’) //判断文本是否结束 
   { 
  Encode(ch);//对字符ch编码 
   UpdateTree();更新Huffman树 
  C++; 
  ch=m_sAdapOriginalText[C]; 
   } 
  SetDlgItemText(IDC_Adap_CompressText,adapstr);//在二进制编辑框显示压缩流 
  Huffman_Information(); 
  SetDlgItemText(IDC_Adap_Information,information); 
  CheckCompressButton=TRUE;//按下压缩按钮,把它赋为TRUE 
  CButton *pBtn; 
  //屏蔽压缩按钮 
  pBtn=(CButton*)GetDlgItem(IDC_Compress); 
  pBtn->EnableWindow(FALSE); 

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说计算机自适应Huffman压缩码的生成(2)在线全文阅读。

自适应Huffman压缩码的生成(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/lunwen/jisuanji/120347.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: