1 / 15
文档名称:

哈弗曼编码程序说明书.doc

格式:doc   大小:66KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

哈弗曼编码程序说明书.doc

上传人:nb6785 2022/1/26 文件大小:66 KB

下载得到文件列表

哈弗曼编码程序说明书.doc

文档介绍

文档介绍:11 / 13











__
用到的位图和图标添加进去。
3.设计IDD_HUFFMANCODE_DIALOG对话框模板,删除该模板上除Cancel按钮外的所有控件并根据要求和如下表的容,向对话框模板中加入控件。
控件类型
ID
标题
其他属性
静态图片
IDC_STATIC
Type列表框选择Bitmap
静态图片
IDC_STATIC
Type列表框选择Bitmap选中
命令按钮
IDC_VALUE
字符权值输入编码/译码
选中Default button
命令按钮
IDC_TEXT
文本输入编码/译码
选中Default button
命令按钮
IDCANCEL
退出
选中Default button
如下图:
,并添加相关控件,关联成员变量:
成员变量如下表:
控件ID
变量类型
变量名
IDC_CHAR
CString
m_strChar
IDC_CVALUE
int
m_strValue
IDC_EDIT_CONTENT1
CString
m_strContent1
IDC_EDIT_OUTPUT1
CString
m_strOutput1
IDC_LIST_BOX1
CListBox
m_listBox1
IDC_LIST_BOX2
CListBox
m_listBox2
添加消息处理函数:
对象ID
消息
消息处理函数
IDC_ADD
BN_CLICKED
OnAdd〔默认名〕
IDC_OK
BN_CLICKED
OnOk〔默认名〕
IDC_MAKECODE1
BN_CLICKED
OnMakecode1〔默认名〕
IDC_TRANSLATECODE1
BN_CLICKED
OnTranslatecode1<默认名>
编写消息处理函数:
char *str;
char code[27];
int w[27];
HuffmanTree HT;
HuffmanCode HC;
2 / 15
char c[27];
int count=0;
void HuffmanCoding1<HuffmanTree &HT,HuffmanCode &HC,int *w,int n>
{//编码函数,用于调用
if<n<=1> return;
int m=2*n-1;
int i,start,s1,s2;
HT=<HuffmanTree>malloc<<m+1>*sizeof<HTNode>>;
int sum=0;
for<i=1;i<=n;++i>
{
HT[i].weight=w[i];
HT[i].parent=0;
HT[i].lchild=0;
HT[i].rchild=0;
sum = sum + HT[i].weight;
}
for<i=n+1;i<=m;++i>
{
HT[i].weight=0;
HT[i].parent=0;
HT[i].lchild=0;
HT[i].rchild=0;
}
for<i=n+1;i<=m;++i>
{
unsigned int min1 = sum;
unsigned int min2 = sum;
for<int j = 1;j<=i - 1;++j>
if<HT[j].parent ==0 && min1>=HT[j].weight >
{
min1 = HT[j].weight;
s1 = j;
}
for<j=1;j<=i-1;j++ >
if <j!=s1 && HT[j].parent==0 && min2>=HT[j].weight>
{
min2 = HT[j].weight;
s2 = j;
}
HT[s1].parent=i;HT[s2].parent=i;