1 / 16
文档名称:

数据结构实验报告2.docx

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

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

分享

预览

数据结构实验报告2.docx

上传人:森林书屋 2022/6/23 文件大小:103 KB

下载得到文件列表

数据结构实验报告2.docx

相关文档

文档介绍

文档介绍:!-
数据结构




].RChild=-1;
HTree[i].parent=-1;
}
int x,y;
if(n>1)// 因为如果只有一种字符就直接它自个儿了
{
for( i=n;i<2*n-1;i++) //建立哈夫曼树
!-
{
SelectMin(x,y,0,i); //找出最小权重的两个字符
HTree[x].parent=HTree[y].parent=i;
HTree[i].weight=HTree[x].weight+HTree[y].weight;
HTree[i].LChild=x;
HTree[i].RChild=y;
HTree[i].parent=-1;
}
}
}
时间复杂度: n

void Huffman::SelectMin(int &x,int &y,int a,int b)
{
int j,min1,min2;
min1=min2=-1;
for(j=a;j<b;j++)
if(HTree[j].parent==-1)
{
if(HTree[j].weight<min1||min2==-1)
{
if(min1!=-1)
!-
{
min2=min1;
y=x;
}
min1=HTree[j].weight;
x=j;
}
else
if(HTree[j].weight<min2||min2==-1)
{
min2=HTree[j].weight;
y=j;
}
}
}
时间复杂度: n

void Huffman::CreateCodeTable(char counts[],int n)
{int i;
HCodeTable = new HCode[n];
if(n<2)
{
!-
HCodeTable[0].data=counts[0];
HCodeTable[0].code[0]='0';
HCodeTable[0].code[1]='\0';
cout<<"字符及其编码 :"<<counts[0]<<" 0 "<<endl;
}
else
{
for(i=0;i<n;i++)
{
HCodeTable[i].data=counts[i];
cout<<" 字符及其编码 :"<<counts[i]<<" ";
int child=i;
int parent=HTree[i].parent;
int k=0;
while(parent!=-1)
{
if (child==HTree[parent].LChild)
HCodeTable[i].code[k]='0';
else
HCodeTable[i].code[k]='1';
k++;
!-
child=parent;
parent=HTree[child].parent;
}
HCodeTable[i].code[k]='\0';
Reverse(HCodeTable[i].code);
k=0;
while(HCodeTable[i].code[k]!='\0')
{
cout<<HCodeTable[i].code[k];
k++;
}
cout<<endl;
}
}
}
时间复杂度: n

void Huffman::Revers