数据结构多项式相加,可以运行,但是输入数据后,不能显示结果
#include<stdio.h>#include<stdlib.h>
typedef struct tt
{
int a;
int b;
struct tt *next;
}LinkList;
LinkList *Int()
{
LinkList *head,*s,*r;
head=(LinkList*)malloc(sizeof(LinkList));
r=head;
int aa,bb;
scanf("%d%d",&aa,&bb);
while(aa)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->a=aa;
s->b=bb;
r->next=s;
r=s;
scanf("%d%d",&aa,&bb);
}
r->next=NULL;
return head;
}
LinkList *Sum(LinkList *L,LinkList *H)
{
LinkList *p,*q,*t,*k,*w;
p=L->next;
q=H->next;
k=(LinkList*)malloc(sizeof(LinkList));
w=k;
while(p!=NULL&&q!=NULL)
{
if(p->b==q->b)
{
int sum;
sum=p->a+q->a;
if(sum==0)
{
t=p;
p=p->next;
free(t);
t=q;
q=q->next;
free(t);
}
else
{
p->a=sum;
k->next=p;
k=k->next;
p=p->next;
t=q;
q=q->next;
free(t);
}
}
if(p->b<q->b)
{
k->next=p;
k=k->next;
p=p->next;
}
if(p->b>q->b)
{
k->next=q;
k=k->next;
q=q->next;
}
if(p!=NULL)
k->next=p;
if(q!=NULL)
k->next=q;
}
return w;
}
int main()
{
LinkList *m,*n,*f,*p;
m=Int();
n=Int();
f=Sum(m,n);
p=f->next;
int flag=0;
while(p)
{
if(!flag)
printf("%d*x^%d",p->a,p->b);
else
{
if(p->a>0)
printf("+%d*x^%d",p->a,p->b);
else
printf("%d*x^%d",p->a,p->b);
}
flag=1;
p=p->next;
}
printf("\n");
return 0;
}