ef;Р int expn;Р struct Polynomial *next;Р}*Polyn,Polynomial; //Polyn为结点指针类型Рvoid Insert(Polyn p,Polyn h){ Р if(p->coef==0) free(p); //系数为0的话释放结点Р else{Р Polyn q1,q2;Р q1=h;q2=h->next;Р while(q2&&p->expn<q2->expn){ //查找插入位置Р q1=q2;Р q2=q2->next;Р }Р if(q2&&p->expn==q2->expn){ //将指数相同相合并Р q2->coef+=p->coef;Р free(p);Р if(!q2->coef){ //系数为0的话释放结点Р q1->next=q2->next;Р free(q2);Р }Р }Р else{ //指数为新时将结点插入Р p->next=q2;Р q1->next=p;Р }Р }Р}//InsertРPolyn CreatePolyn(Polyn head,int m){//建立一个头指针为head、项数为m的一元多项式Р int i;Р Polyn p;Р p=head=(Polyn)malloc(sizeof(struct Polynomial));Р head->next=NULL;Р for(i=0;i<m;i++){Р p=(Polyn)malloc(sizeof(struct Polynomial));//建立新结点以接收数据Р printf("请输入第%d项的系数与指数:",i+1);Р scanf("%f %d",&p->coef,&p->expn);Р Insert(p,head); //调用Insert函数插入结点Р }Р return head;Р}//CreatePolyn