last->next=NULL;
}
return head;
}
P_Polynomial Sort_polynomial(P_Polynomial pol)
{//对多项式排序,
P_Polynomial head=pol,p,q,r,t;
if(head->next==NULL)
printf("input error!!! ");
else
{
p=head->next;
q=p->next;
p->next=NULL;
p=q;
}
while(p!=NULL)
{
r = head;
q = r->next;
while(q != NULL&& q->e < p->e)
{
r = q;
q = q->next;
}
t=p->next;
p->next=r->next;
r->next=p;
p=t;
}
return(head);
}
P_Polynomial Combine_polynomial(P_Polynomial head)
{//对指数相同的多项式进行合并。。
P_Polynomial p1,p2;
p1=head->next;
while(p1->next!=NULL)
{
if(p1->next->e==p1->e)
{
p2=p1->next;
p1->e=p1->e+p2->e;
free(p2);
}
else
{
p1=p1->next;
}
}
return head;
}
void output(P_Polynomial head)
{
P_Polynomial p1;
p1=head->next;
while(p1!=NULL)
{
if(p1->e<0&&p1!=NULL)
printf("\b\b");
printf("%dX(%d)+",p1->p,p1->e);
p1=p1->next;
}
printf("\b");
printf("\n");
}
int main()
{
P_Polynomial p1,p2,add,mul;
printf("please input p1:\n");
p1=Input();
printf("please input p2:\n");
p2=Input();
// printf("p1+p2=");
// add=Add_polynomial(p1,p2);
// output(add);n
printf("p1*p2=");
mul=Mul_polynomial(&p1,&p2);
Sort_polynomial(mul);
Combine_polynomial(mul);
output(mul);
return 0;
}