#include<stdio.h>
#include<malloc.h>
#include<iostream.h>
typedef struct Polynomial
{
float coef;
int exp;
struct Polynomial *next;
}*Poly,Polynomial;
void Insert(Poly p,Poly head) //插入
{
if(p->coef==0) //系数为0时释放结点
free(p);
else
{
Poly q1,q2;
q1=head;
q2=head->next;
while(q2&&p->exp<q2->exp) //后移查找插入位置
{
q1=q2;
q2=q2->next;
}
if(q2&&p->exp==q2->exp) //将指数相同的相合并
{
q2->coef+=p->coef;
free(p);
if(!q2->coef) //系数为0时释放结点
{
q1->next=q2->next;
free(q2);
}
//p->next=q2;
//q1->next=p;
}
else
{
p->next=q2;
q1->next=p;
}
}
}
Poly CreateList(Poly head,int m) //建立一个头指针为head、项数为m的一元多项式
{
int i;
Poly p;
Polynomial *q;
p=head=(Poly)malloc(sizeof(struct Polynomial));
head->next=NULL;
for(i=0;i<m;i++)
{
p=(Poly)m