⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 哈夫曼编码器.cpp

📁 哈夫曼编码器
💻 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 + -