data.expn) p=p->next; if (p==NULL || e.expn!=p->data.expn) return 0; //查找失败 else return 1; //查找成功 }LinkList InsertNode(LinkList L,DataType e) { ListNode *s,*p; p=L; while(p->next && p->next->data.expn>e.expn) p=p->next; s=(ListNode *)malloc(sizeof(ListNode)); s->data.coef=e.coef; s->data.expn=e.expn; s->next=p->next; p->next=s; return(L); }
LinkList CreatPolyn(int n) { LinkList pa; int i;
DataType e; pa=(ListNode *)malloc(sizeof(ListNode)); pa->next=NULL; for(i=1;i<=n;i++) { scanf(\"%f,%d\ if (!LocateNode(pa,e)) pa=InsertNode(pa,e); } return(pa); }
void printList(LinkList L) { ListNode *p; p=L->next; while(p) { printf(\"%c %fx^%d\ p=p->next; } printf(\"\\n\"); }
LinkList AddPolyn(LinkList La,LinkList Lb) { ListNode *pa,*pb,*pc,*s,*Lc; float sum; pa=La->next;pb=Lb->next;Lc=pc=La; while(pa && pb) { if(pa->data.expn>pb->data.expn) { pc->next=pa;pc=pa;pa=pa->next; } else if(pa->data.expndata.expn) { pc->next=pb;pc=pb;pb=pb->next; } else { sum=pa->data.coef+pb->data.coef; if(fabs(sum)>1e-6) { pa->data.coef=sum;pc->next=pa;pc=pa;pa=pa->next;s=pb;pb=pb->next;free(s); } else { s=pa;pa=pa->next;free(s); s=pb;pb=pb->next;free(s); } } } pc->next=pa?pa:pb; free(Lb); return(Lc); }
void main() { LinkList La,Lb,Lc; int n; printf(\"输入第一个多项式的项数:\"); scanf(\"%d\ printf(\"输入第一个多项式的每一项的系数,指数:\\n\"); La=CreatPolyn(n); printf(\"第一个多项式为:\"); printList(La); printf(\"输入第二个多项式的项数:\"); scanf(\"%d\ printf(\"输入第二个多项式的每一项的系数,指数:\\n\"); Lb=CreatPolyn(n); printf(\"第二个多项式为:\"); printList(Lb); Lc=AddPolyn(La,Lb); printf(\"\\n相加后的和多项式为:\"); printList(Lc); getchar(); getchar(); }