📄 哈夫曼编码器.cpp
字号:
#include "String1.h"
#include "stdlib.h"
#include "stdio.h"
#include "Haffman.h"
#include"Haffmanbianma.h"
#define Maxsize 100
#define Maxm 1000
typedef char Datatype;
void main()
{
char ch[Maxm];
printf("请输入你所需的字符串:");
gets(ch);
String1 str(ch);
CharW *Arrage=(CharW *)malloc(sizeof(CharW)*Maxsize);
int *m=ReadChar(str,Arrage);
int k=*m;
int w=str.length();
printf("输入的总字符个数:%d\n",w);
int *weight=(int*)malloc(sizeof(int)*k);
for(int j=0;j<k;j++)
weight[j]=Arrage[j].w;
HaffNode *HaffTree=(HaffNode *)malloc(sizeof(HaffNode)*(2*k+1));
Code *myHaffCode=(Code *)malloc(sizeof(Code)*k);
Haffman(weight,k,HaffTree);
HaffmanCode(HaffTree,k,myHaffCode);
FILE *fp;
if((fp=fopen("e:\\code.txt","w"))==NULL)
{
printf("文件code.txt打开错误!");
exit(1);
}
fprintf(fp,"哈夫曼编码对照表:\n");
for(int t=0;t<k;t++)
{
fprintf(fp,"%c:",Arrage[t].zf);
for(int h=myHaffCode[t].start+1;h<k;h++)
fprintf(fp,"%d",myHaffCode[t].bit[h]);
fprintf(fp,"\n");
}
fclose(fp);
printf("凹入法表示生成的哈夫曼树:\n");
AoShow(HaffTree,k);
printf("哈夫曼编码对照表:\n");
for(int q=0;q<k;q++)
{
printf("%c:",Arrage[q].zf);
for(int h=myHaffCode[q].start+1;h<k;h++)
printf("%d",myHaffCode[q].bit[h]);
printf("\n");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -