帮忙修改下!自己一直找不出错误!感激不尽!#include using namespace std;typedef struct LNode{ int coef; //系数 int expn; //指数 struct LNode *next;}LNode,*polynomial; void CreatPolyn(polynomial &p,int m){ int i,coef,expn; polynomial s; p=(polynomial)malloc(sizeof(LNode)); p->next=NULL; for(i=1;i<=m;i++) { s=(polynomial)malloc(sizeof(LNode)); scanf("%d,%d",&coef,&expn); s->coef=coef; s->expn=expn; s=p->next; s=s->next; }int cmp(polynomial,polynomial){ if(a->expn=b->expn) return 0; else(a->expnexpn) return -1; else return 1; }void AddPolyn(polynomial &a,polynomial &b,polynomial &c){ a=(polynomial)malloc(sizeof(LNode)); b=(polynomial)malloc(sizeof(LNode)); la=a->next; lb=b->next; //la和lb分别指向a和b的头结点 c=(polynomial)malloc(sizeof(LNode)); lc=lc=a; while(la&&lb){ switch(*cmp(la,lb)){ case -1: //多项式Pa中当前结点的指数值小 lc->next=la; lc=la; la->next=la; break; case 0: //两者的指数值相等 sum=a->coef+b->coef; if(sum!=0){ //修改多项式Pa中当前结点的系数值 la->coef=sum; lc->next=la; lc=la; la->next=la; lb->next=lb; } else{ //删除多项式Pa中的当前结点 la->next= lb->next=; free(a); free(b); } case 1: //多项式PB中当前结点的指数值小 lc->next=lb; lc=lb; lb->next=lb; break; } } if(!lb) { lc->next=lb; //链接Pb中的剩余结点 lc=lb; lb->next=lb; free(lb); } else{ lc->next=la; lc=la; la->next=la; free(la); } }void Print(polynomial &L){ L=(polynomial)malloc(sizeof(LNode)); p=L->next; while(p) { printf("%d,%dn",p->coef,p->expn); p->next=p; }void main(){ LNode a,b,c; int m,n CreatPolyn(a,m); CreatPolyn(b,n); AddPolyn(a,b,c); Print(c);}
|