69,336
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
typedef struct huftree{
int weight;
int Plink,Llink,Rlink;
} *HFT,Tnode;
typedef struct hufcode{
int star;
int symbol;
int bits[5];
} *HFC,Cnode;
void intilTree(int *w,int n,HFT ht,HFC hc){
int i;
for(i=1;i<n+1;i++){
ht[i].Llink=0;
ht[i].Plink=0;
ht[i].Rlink=0;
ht[i].weight=w[i];
}
for(i;i<2*n;i++){
ht[i].Llink=0;
ht[i].Plink=0;
ht[i].Rlink=0;
ht[i].weight=0;
}
}//intil
main(){
HFT ht;
HFC hc;
int n;
int *w;
int i=0;
int w0;
int m;
m=2*n-1;
printf("shuru N\n");
scanf("%d",&n);
w=(int*)malloc((n+1)*sizeof(int));
ht=(HFT)malloc((m+1)*sizeof(Tnode));
hc=(HFC)malloc((n+1)*sizeof(Cnode));
for(i=1;i<n+1;i++){
printf("第%d个权值\n",i);
scanf("%d",&w0);
w[i]=w0;
}
intilTree(w,n,ht,hc);
for(i=1;i<=m;i++){
printf("%d %d %d %d\n",ht[i].weight,ht[i].Llink,ht[i].Rlink,ht[i].Plink);
}
}
#include<stdio.h>
#include<stdlib.h>
typedef struct huftree{
int weight;
int Plink,Llink,Rlink;
} *HFT,Tnode;
typedef struct hufcode{
int star;
int symbol;
int bits[5];
} *HFC,Cnode;
void intilTree(int *w,int n,HFT ht,HFC hc){
int i;
for(i=1;i<n+1;i++){
ht[i].Llink=0;
ht[i].Plink=0;
ht[i].Rlink=0;
ht[i].weight=w[i];
}
for(;i<2*n;i++){
ht[i].Llink=0;
ht[i].Plink=0;
ht[i].Rlink=0;
ht[i].weight=0;
}
}//intil
main(){
HFT ht;
HFC hc;
int n;
int *w;
int i=0;
int w0;
int m;
printf("shuru N\n");
scanf("%d",&n);
m=2*n-1;
w=(int*)malloc((n+1)*sizeof(int));
ht=(HFT)malloc((m+1)*sizeof(Tnode));
hc=(HFC)malloc((n+1)*sizeof(Cnode));
for(i=1;i<n+1;i++){
printf("第%d个权值\n",i);
scanf("%d",&w0);
w[i]=w0;
}
intilTree(w,n,ht,hc);
printf("helloworld!\n");
for(i=1;i<=m;i++){
printf("%d %d %d %d\n",ht[i].weight,ht[i].Llink,ht[i].Rlink,ht[i].Plink);
}
}
如上的代码;
主要改一下一条代码语句的位置即可。即
scanf("%d",&n);
m=2*n-1;
m = 2 * n -1;需要放在scanf之后,不然,n是随机值(可能很大,导致输出时越界,出现楼主的停止运行),那么m = 2 * n -1也会变得很大;
所以,m = 2 * n -1需要放在scanf之后,这样n确定大小了,m的值也会确定大小了。