数据结构实习之Huffman编译码器(三)
来源:互联网 发布:zph01单片机驱动程序 编辑:程序博客网 时间:2024/05/21 17:02
3.对每个字符编码:
void HuffanTree::enCode(int n,CListCtrl *list)//huffman coding{HuffmanNode *current;HuffmanNode *parent;CString code="";//编码int charNum,nodeNum;char ch;for(charNum=0;charNum<n;charNum++){code="";ch= list->GetItemText(charNum,0)[0];for(nodeNum=0;nodeNum<n;nodeNum++){if (ch==huffNode[nodeNum]->character){current=huffNode[nodeNum]->sAddress;parent=current->parent;while(current!=root){if (parent!=NULL&&parent->rightChild->sAddress==current->sAddress)code+="1";if (parent!=NULL&&parent->leftChild->sAddress==current->sAddress)code+="0";current=parent;parent=current->parent;}code.MakeReverse();huffNode[nodeNum]->hfmCode=code;//将code逆序}}list->SetItemText(charNum,3,code);}}
4.对字符串编译码
void CHuffmanDlg::OnButtonDecode() {// TODO: Add your control notification handler code hereCString codeStr,str,strTemp,strTemp2;CString decodeStr="";GetDlgItemText(IDC_EDIT_CODE,codeStr);str=codeStr;int n=m_num;//叶子节点个数int i=0,j=0;int minLC=m_plist.GetItemText(0,3).GetLength(),maxLC=0;//最短和最长哈弗曼码int len=0;for (i=0;i<n;i++){len=m_plist.GetItemText(i,3).GetLength();minLC=minLC<=len?minLC:len;maxLC=maxLC>=len?maxLC:len;}while(str!=""){for (i=minLC;i<=maxLC;i++){strTemp=str.Left(i);j=0;strTemp2=m_plist.GetItemText(j,3);while(strTemp!=strTemp2&&j<n){j++;strTemp2=m_plist.GetItemText(j,3);}if (strTemp==m_plist.GetItemText(j,3)&&j<n){str=str.Right(str.GetLength()-i);decodeStr+=m_plist.GetItemText(j,0);}}}SetDlgItemText(IDC_EDIT_DECODE,decodeStr);}
- 数据结构实习之Huffman编译码器(三)
- 数据结构实习之Huffman编译码器(一)
- 数据结构实习Huffman编译码器(二)
- 数据结构实习之Huffman编译码(四)
- C++ 实现Huffman编译码器
- Hamming(7,4)编译码器
- 赫夫曼编码译码器(数据结构)
- 实验三 无损数据压缩编解码实验(Huffman编解码)
- 实验三—Huffman编解码
- 数据压缩实验三:Huffman编解码
- Huffman编码译码器 Android版本
- 创建Huffman(数据结构)
- 数据压缩实验三--Huffman编解码及压缩率的比较
- Hamming(7,4)编译码器
- Huffman树编码(数据结构)
- 常用数据结构之Huffman树及应用
- 实习见闻之三
- huffman编解码源代码
- [C# 基础知识系列]专题二:委托的本质论
- Hadoop 类AggregateWordCount源代码注释
- [C# 基础知识系列]专题三:如何用委托包装多个方法——委托链
- types跟data的区别
- [C# 基础知识系列]专题四:事件揭秘
- 数据结构实习之Huffman编译码器(三)
- 利用MODLLER同源建模的基本步骤
- 判断Android网络是否连接方法
- C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型
- 链表的简单实现
- Shape Drawable的学习
- PHP 导出 和写入 Excel文件
- 导致flash屏幕重绘的几种方式及避免重绘的方法
- 文件的字符输入输出流