#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int xi;
int zhi;
struct node next;
}pnode, plinklist;
void Init(plinklist *L)
{
*L=(plinklist)malloc(sizeof(pnode));
(*L)->next=NULL;
}
void creatfromtail(plinklist L)
{
pnode *s;
int c,d;
plinklist r;
int flag=1;
r=L;
while(flag)
{
scanf("%d,%d",&c,&d);
if(c!=0||d!=0)
{
s=(plinklist)malloc(sizeof(pnode));
s->xi=c;
s->zhi=d;
r->next=s;
r=s;
}
else
{
flag=0;
r->next=NULL;
}
}
}
void polyadd(plinklist LA,plinklist LB)
{
pnode *L,*S,*R;
int sum=0;
L=LA->next;
S=LB->next;
while(L&&S)
{
sum=L->xi+S->xi;
if(sum)
{
L->xi=sum;
L=L->next;
R=S;
S=S->next;
free(R);
}
else
{
R=L;
L=L->next;
free(R);
R=S;
S=S->next;
free(R);
}
}
}
void Print(plinklist l)
{
pnode *s;
s=l->next;
while(s!=NULL)
{
if(s->zhi==0)
printf("%d",s->xi);
if(s->next)
{
printf("+");
if(s->zhi)
printf("%dx^%d",s->xi,s->zhi);
}
else
break;
s=s->next;
}
}
int main()
{
plinklist LA,LB;
Init(&LA),Init(&LB);
printf("第一个多项式各项系数和指数为:\n");
creatfromtail(LA);
printf("第二个多项式各项系数和指数为为:\n");
creatfromtail(LB);
polyadd(LA,LB);
Print(LA);
return 0;
}