这是链表写一元多项式的和,一直运行不出来和的结果,希望得到帮助,感谢感谢!
```c
#include"stdio.h"
#include"stdlib.h"
typedef struct Ploy{
float coef;
int expn;
struct Ploy* next;
}ploy;
ploy* creat(ploy* La)
{
char ch;
ploy *pa,*q;
int len=0;
La=pa=(ploy*)malloc(sizeof(ploy));
pa->next=NULL;
printf("\n若输入结束,请输入over!\n");
while(ch!=EOF)
{
len++;
q=(ploy*)malloc(sizeof(ploy));
printf("请输入第 %d 个元素的系数:",len);
scanf("%f",&(q->coef));
printf("请输入第 %d 个元素的指数:",len);
scanf("%d",&(q->expn));
ch=getchar();
ch=getchar();
q->next=NULL;
pa->next=q;
pa=q;
}
return La;
}
ploy* Add(ploy* La,ploy* Lb)
{
ploy *pa,*pb,*pc,*Lc;
pa=La->next;
pb=Lb->next;
pc=Lc=La;
float x;
ploy* pr;
while(pa && pb){//这里debug时下面三个if语句进行到一半就出现segmentation fault
if(pa->expn<pb->expn){
pc->next=pa;
pc=pa;
pa=pa->next;
}
if(pa->expn>pb->expn){
pc->next=pb;
pc=pb;
pb=pb->next;
}
if(pa->expn==pb->expn){
x=pa->coef+pb->coef;
if(abs(x)<=1.0e-6){
pr=pa;pa=pa->next;free(pr);
pr=pb;pb=pb->next;free(pr);
}else{
pc->next=pa;
pc=pa;
pc->coef=x;
pr=pb;
pa=pa->next;
pb=pb->next;
free(pr);}
}
}
if(!pa){
while(pa){
pc->next=pa;
pc=pa;
pa=pa->next;
}
}
if(!pb){
while(pb){
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
return Lc;
}
void output(ploy* La){//输出
ploy* pa;
pa=La->next;
printf("\nto\n");
while(pa){
printf(" +%.0f*x^%d",pa->coef,pa->expn);
pa=pa->next;
}
}
int main()
{
ploy *La,*Lb;
La=creat(La);
output(La);
Lb=creat(Lb);
output(Lb);
La=Add(La,Lb);
output(La);
return 0
}
```
你上面pc是怎么来的?没有初始化就使用。仔细想想怎么做。
不知道你这个问题是否已经解决, 如果还没有解决的话: