
帮忙看一下这段程序有什么错误,我找不出来
#include<iostream.h>#include<malloc.h>#include<string.h>typedefstruct{unsignedintweig...
#include<iostream.h>
#include<malloc.h>
#include<string.h>
typedef struct{
unsigned int weight;
unsigned int parent, lchild,rchild;
}HTNode,*Huffmantree;
typedef char * * Huffmancode;
void select(Huffmantree &HT,int n,int &s1,int &s2){
int i;
for(i=1;i<=n;i++)
if(HT[i].parent==0){s1=i;break;}
for(i=1;i<=n;++i){
if((HT[i].parent==0)&&(HT[i].weight<HT[s1].weight))
s1=i;}
for(i=1;i<=n;i++)
if(HT[i].parent==0&&i!=s1){s2=i;break;}
for(i=1;i<=n;i++){
if(i==s1)continue;
if((HT[i].parent==0)&&(HT[i].weight<HT[s2].weight))
s2=i;}
}
void Huffmancoding(Huffmantree &HT,Huffmancode &HC,int * w,int n){
if(n<=1)return;
int m,start,c,f,i,s1,s2;
m=2*n-1;
HT=(Huffmantree)malloc((m+1)*sizeof(HTNode));
Huffmantree p;
?for(p=HT+1,i=1;i<=n;++i,++p,++w)*p={*w,0,0,0};
?for(;i<=m;++i,++p)*p={0,0,0,0};
for(i=n+1;i<=m;++i){
select(HT,i-1,s1,s2);
HT[s1].parent=i;HT[s2].parent=i;
HT[i].lchild=s1;HT[i].rchild=s2;
HT[i].weight=HT[s1].weight+HT[s2].weight;
}
HC=(Huffmancode)malloc((n+1)*sizeof(char *));
char * cd;
cd=(char *)malloc(n*sizeof(char));
cd[n-1]='\0';
for(i=1;i<=n;++i){
start=n-1;
for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)
if(HT[f].lchild==c)cd[--start]='\0';
else cd[--start]='1';
HC[i]=(char *)malloc((n-start)*sizeof(char));
strcpy(HC[i],&cd[start]);
}free(cd);
}
void main(){
int i,*p;
Huffmantree HT;
Huffmancode HC;
int w[]={1,2,3,4,5};
p=w;
Huffmancoding(HT,HC,p,5);
for(i=1;i<=5;i++)
cout<<HC[i]<<endl;}
我打问号那里,老提示有错误 展开
#include<malloc.h>
#include<string.h>
typedef struct{
unsigned int weight;
unsigned int parent, lchild,rchild;
}HTNode,*Huffmantree;
typedef char * * Huffmancode;
void select(Huffmantree &HT,int n,int &s1,int &s2){
int i;
for(i=1;i<=n;i++)
if(HT[i].parent==0){s1=i;break;}
for(i=1;i<=n;++i){
if((HT[i].parent==0)&&(HT[i].weight<HT[s1].weight))
s1=i;}
for(i=1;i<=n;i++)
if(HT[i].parent==0&&i!=s1){s2=i;break;}
for(i=1;i<=n;i++){
if(i==s1)continue;
if((HT[i].parent==0)&&(HT[i].weight<HT[s2].weight))
s2=i;}
}
void Huffmancoding(Huffmantree &HT,Huffmancode &HC,int * w,int n){
if(n<=1)return;
int m,start,c,f,i,s1,s2;
m=2*n-1;
HT=(Huffmantree)malloc((m+1)*sizeof(HTNode));
Huffmantree p;
?for(p=HT+1,i=1;i<=n;++i,++p,++w)*p={*w,0,0,0};
?for(;i<=m;++i,++p)*p={0,0,0,0};
for(i=n+1;i<=m;++i){
select(HT,i-1,s1,s2);
HT[s1].parent=i;HT[s2].parent=i;
HT[i].lchild=s1;HT[i].rchild=s2;
HT[i].weight=HT[s1].weight+HT[s2].weight;
}
HC=(Huffmancode)malloc((n+1)*sizeof(char *));
char * cd;
cd=(char *)malloc(n*sizeof(char));
cd[n-1]='\0';
for(i=1;i<=n;++i){
start=n-1;
for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)
if(HT[f].lchild==c)cd[--start]='\0';
else cd[--start]='1';
HC[i]=(char *)malloc((n-start)*sizeof(char));
strcpy(HC[i],&cd[start]);
}free(cd);
}
void main(){
int i,*p;
Huffmantree HT;
Huffmancode HC;
int w[]={1,2,3,4,5};
p=w;
Huffmancoding(HT,HC,p,5);
for(i=1;i<=5;i++)
cout<<HC[i]<<endl;}
我打问号那里,老提示有错误 展开
2个回答
展开全部
#include<iostream.h>
#include<malloc.h>
#include<string.h>
typedef struct{
unsigned int weight;
unsigned int parent, lchild,rchild;
}HTNode,*Huffmantree;
typedef char * * Huffmancode;
void main()
{
Huffmantree ht;
Huffmancode hc;
}
ht现在是一个指针,而hc现在是一个什么我就不知道了
你的错误很多
先指出一些把:
if(HT[f].lchild==c) X C是整型 而前面的是单精度字符型
?for(p=HT+1,i=1;i<=n;++i,++p,++w)*p={*w,0,0,0};
不可以这么赋值,不信的话,试试下面的代码
#include<iostream.h>
typedef struct{
unsigned int weight;
unsigned int parent, lchild,rchild;
}HTNode,*Huffmantree;
typedef char * * Huffmancode;
void main()
{
Huffmantree HT;
*HT={0,0,0,0};
}
你看看这个,它也无法编译成功
你可以把它们分别赋值,如ht->得到成员后赋值
#include<malloc.h>
#include<string.h>
typedef struct{
unsigned int weight;
unsigned int parent, lchild,rchild;
}HTNode,*Huffmantree;
typedef char * * Huffmancode;
void main()
{
Huffmantree ht;
Huffmancode hc;
}
ht现在是一个指针,而hc现在是一个什么我就不知道了
你的错误很多
先指出一些把:
if(HT[f].lchild==c) X C是整型 而前面的是单精度字符型
?for(p=HT+1,i=1;i<=n;++i,++p,++w)*p={*w,0,0,0};
不可以这么赋值,不信的话,试试下面的代码
#include<iostream.h>
typedef struct{
unsigned int weight;
unsigned int parent, lchild,rchild;
}HTNode,*Huffmantree;
typedef char * * Huffmancode;
void main()
{
Huffmantree HT;
*HT={0,0,0,0};
}
你看看这个,它也无法编译成功
你可以把它们分别赋值,如ht->得到成员后赋值

2025-03-07 广告
第一步:看XPE是什么版,如果内核是英文版,需要安装一个MUI包,即语言包。第二步:进入控制面板-区域和语言选项,如下图,在区域选项中,选择“中文(中国)”,位置也为“中国”,在高级选项中,代码页转换表中,将所有的“简体中文”都选择上。...
点击进入详情页
本回答由力控科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询