重新看数据结构了,然后第二章线性表多项式老师没讲自己看的,什么鸡巴学校啊。
最后实现的时候系数0没考虑,其实主要的指针操作已经出来了。不过少了一个系数为0的节点应该删去,少了删除操作。
#include<iostream> #include<stdlib.h> using namespace std; struct node{ int xi; int ci; node* next; }; int main() { int lengtha,lengthb,i; node *L1,*L2,*p,*q; cin>>lengtha>>lengthb; L1=(node*)malloc(sizeof(node)); L2=(node*)malloc(sizeof(node)); L1->next=NULL; L2->next=NULL; p=L1; for(i=1;i<=lengtha;i++) { q=(node*)malloc(sizeof(node)); cin>>q->xi>>q->ci; p->next=q; p=q; p->next=NULL; } p=L2; for(i=1;i<=lengthb;i++) { q=(node*)malloc(sizeof(node)); cin>>q->xi>>q->ci; p->next=q; p=q; p->next=NULL; } p=L1->next; q=L2->next; while(p!=NULL&&q!=NULL) { if(p->ci==q->ci) { p->xi=p->xi+q->xi; p=p->next; q=q->next; } else if(p->ci>q->ci) { node *j,*n; j=L1; n=q; q=q->next; while((j->next)!=p) { j=j->next; } n->next=j->next; j->next=n; } else p=p->next; } if(p==NULL&&q!=NULL) p=q; p=L1->next; while(p!=NULL&&p->next!=NULL) { cout<<p->xi<<"x^"<<p->ci<<"+"; p=p->next; } if(p!=NULL&&p->next==NULL) cout<<p->xi<<"x^"<<p->ci<<endl; system("pause"); return 0; }