多项式的加法,错在那里帮忙找找,不甚感激!
多项式的加法,错在那里帮忙找找,不甚感激!# include<stdio.h>
typedef struct Linklist
{
int coef;
int expn;
struct Linklist *next;
}Linklist;
Linklist *creat()
{
Linklist *L,*p,*q;
L= (Linklist *)malloc(sizeof(Linklist));
p=(Linklist *)malloc(sizeof(Linklist));
printf("请输入一个多项式!\n");
scanf("%d%d",&p->coef,&p->expn);
L->next=p;
while(p->coef!=0)
{
q=p;
p=(Linklist *)malloc(sizeof(Linklist));
scanf("%d%d",&p->coef,&p->expn);
q->next=p;
}
return L;
}
void print(Linklist *L)
{
Linklist *p;
p=L->next;
while(p!=NULL)
{
printf("(%d,%d)",p->coef,p->expn);
p=p->next;
}
}
Linklist *add(Linklist *La,Linklist *Lb)
{
Linklist *p,*q,*u,*pr1;
int sum;
p=La->next;
q=Lb->next;
pr1=La;
while(p!=NULL&&q!=NULL)
{
if(p->expn<q->expn)
{
pr1=p;
p=p->next;
}
else if(p->expn>q->expn)
{
u=q->next;
pr1->next=q;
q->next=p;
free(q);
q=u;
}
else
{
sum=p->coef+q->coef;
if(sum==0)
{
u=p;
pr1->next=p->next;
p=p->next;
free(u);
u=q;
q=q->next;
free(u);
}
else
{
p->coef=sum;
pr1=p;
p=p->next;
u=q;
q=q->next;
free(u);
}
}
}
}
void main()
{
Linklist *La,*Lb;
La=creat();
Lb=creat();
printf("\n");
print(La);
print(Lb);
La=add(La,Lb);
print(La);
}