📄 haffmancode.cpp
字号:
#include<stdio.h> /*该文件包含prinf()等函数*/
#include<stdlib.h> /*该文件包含exit()等函数*/
#define MaxValue 10000 /*设定的权值最大值*/
#define MaxN 100 /*设定的最大结点个数*/
#include"Haffman.h" /*包含文件Haffman.h*/
void main(void)
{
int i,j,n; /*待编码的字符数n*/
printf("***************************\n 哈夫曼编码\n***************************\n\n请输入将要编码的字符个数:");
scanf("%d",&n);
int weight[100]; /*预留100个字符的权值的存放空间*/
for(i=0;i<n;i++) /*依次输入将要编码的字符的权值*/
{
printf("第%d个权值:",i+1);
scanf("%d",&weight[i]);
}
HaffNode * myHaffTree=(HaffNode *)malloc(sizeof(HaffNode)*(2*n+1));/*为哈夫曼树申请内存*/
Code * myHaffCode=(Code *)malloc(sizeof(Code)*n); /*为哈夫曼编码申请内存*/
if(n>MaxN)
{
printf("给出的n越界,修改MaxN!\n");
exit(1);
}
Haffman(weight,n,myHaffTree); /*构造哈夫曼树*/
HaffmanCode(myHaffTree,n,myHaffCode); /*哈夫曼编码*/
/*输出每个叶结点的哈夫曼编码*/
for(i=0;i<n;i++)
{
printf("Weight=%d Code= ",myHaffCode[i].weight); /*输出哈夫曼编码*/
for(j=myHaffCode[i].start+1;j<n;j++)
printf("%d",myHaffCode[i].bit[j]);
printf("\n");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -