c++实现一元多项式的运算

    科技2022-08-11  98

    #include<iostream> using namespace std; struct node{ int coef; int expn; node* next; }; class Poly{ private: node* head; public: Poly(); void CreatPoly(int n); Poly Add(Poly & L1,Poly & L2,Poly L3); Poly Substract(Poly & L1,Poly & L2,Poly L3); void Print(Poly &L); }; Poly::Poly(){ head=new node; head->next=NULL; } void Poly::CreatPoly(int n){ int i; node* tmp; node* p=head; for(i=0;i<n;i++){ cin>>tmp->coef>>tmp->expn; tmp->next=NULL; p->next=tmp; p=tmp; } } Poly Poly::Add(Poly &L1,Poly &L2,Poly L3){ node *pa,*pb,*pc,*s; pa=L1.head->next; pb=L2.head->next; pc=L3.head->next; if(pa==NULL) return L2; if(pb==NULL) return L1; while(pa!=NULL&&pb!=NULL){ if(pa->expn<pb->expn){ s=new node; s->coef=pa->coef; s->expn=pa->expn; s->next=NULL; pc->next=s; pc=s; pa=pa->next; } if(pa->expn>pb->expn){ s=new node; s->coef=pb->coef; s->expn=pb->expn; s->next=NULL; pc->next=s; pc=s; pb=pb->next; } else{ if((pa->coef+pb->coef)!=0){ s=new node; s->coef=pa->coef; s->expn=pa->expn; s->next=NULL; pc->next=s; pc=s; } pa=pa->next; pb=pb->next; } } return L3; } Poly Poly::Substract(Poly &L1,Poly &L2,Poly L3){ node* pa=L1.head->next; node* pb=L2.head->next; node* pc=L3.head->next; node* p; while(pa!=NULL&&pb!=NULL){ p=pb; while(p!=NULL){ p->coef=(-p->coef); p=p->next; } } L3.Add(L1,L2,L3); } void Poly::Print(Poly &L){ node* p=L.head->next; while(p!=NULL){ cout<<p->coef<<" "<<p->expn; p=p->next; } cout<<endl; } int main(){ Poly l1,l2,l3; l1.CreatPoly(2); l2.CreatPoly(2); l1.Add(l1,l2,l3); l3.Print(l3); }
    Processed: 0.014, SQL: 9