📄 haffmanbianma.h
字号:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
char zf;
int w;
}CharW;
int *ReadChar(String1 &str,CharW Arrage[])
{
int n;
int* flag;
int p=0;
flag=&p;
n=str.length();
bool f=false;
for(int k=0;k<n;k++)
{
Arrage[k].zf=NULL;
Arrage[k].w=0;
}
Arrage[0].zf=str.charAt(0);
Arrage[0].w=1;
p=1;
for(int i=1;i<n;i++)
{
for(int j=0;j<p;j++)
if(Arrage[j].zf==str.charAt(i))
{
f=true;
break;
}
if(f==true)
{
Arrage[j].w++;
f=false;
}
else
{
Arrage[p].zf=str.charAt(i);
Arrage[p].w++;
p++;
}
}
return flag;
}
void paint(HaffNode haffTree[],int g,int i)
{
int c=g;
int a=haffTree[c].LeftChild;
int b=haffTree[c].RightChild;
if(a!=-1)
{
for(int j=0;j<=i;j++)
printf("---");
printf("%d\n",haffTree[a].weight);
c=a;
paint(haffTree,c,i+1);
}
if(b!=-1)
{
for(int j=0;j<=i;j++)
printf("---");
printf("%d\n",haffTree[b].weight);
c=b;
paint(haffTree,c,i+1);
}
}
void AoShow(HaffNode haffTree[],int n)
{
int h=n;
for(int g=0;g<2*h-1;g++)
{
if(haffTree[g].parent==0)
{
printf("-%d\n",haffTree[g].weight);
break;
}
}
paint(haffTree,g,1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -