#ifndef POLYON_H_INCLUDED #define POLYON_H_INCLUDED
//polyon.h #include <iostream> using namespace std; class node { public: int pa; int times; node *next; node(int p = 0,int t = 0,node* n=NULL) { pa = p; times = t; next = n; } }; class polynomial { private: void swap(node *n1,node *n2) { int n,m; n=n1->pa;n1->pa=n2->pa;n2->pa=n; m=n2->times;n2->times=n1->times;n1->times=m; } public: node *head; node *curr; int size; polynomial() { head = curr =new node(); size =0; } polynomial(polynomial &p1,polynomial &p2) { p1.curr = p1.head; while(p1.curr->next!=NULL) p1.curr=p1.curr->next; p1.curr->next = p2.head->next; delete p2.head; head = p1.head; curr = p1.head; size = p1.size+p2.size; } void insert(int p,int t) { curr =new node(p,t,head->next); head->next = curr; size++; } void sort() { for(int i =0;i<size;i++){ for(curr=head->next;curr->next!=NULL;curr=curr->next) { if(curr->times < curr->next->times) swap(curr,curr->next); }} } void merge() { node *tmp; for(curr =head->next;curr!=NULL;curr=curr->next) { // cout<<"#1"<<endl; tmp=curr; while(tmp->next!=NULL) { //cout<<"#2"<<endl; if(tmp->next->times==curr->times) { curr->pa += tmp->next->pa; node *t=tmp->next; tmp->next=tmp->next->next; delete t; } else{ tmp=tmp->next;} } } } void print() { sort(); merge(); // cout<<"merge complete"<<endl; sort(); // cout<<"print"<<endl; curr = head->next; while(curr!=NULL) { if(curr->pa!=0&&curr->next!=NULL) cout<<curr->pa<<'x'<<'^'<<curr->times<<'+'; if(curr->next==NULL) cout<<curr->pa<<'x'<<'^'<<curr->times; curr=curr->next; } cout<<endl; } }; #endif // POLYON_H_INCLUDED
就是定义了一个用于储存多项式的函数;
//main function //author: byshen #include <iostream> #include "polyon.h" using namespace std; int main() { int a,b; char c; polynomial y1,y2; do { cout<<"input the coefficient and exponent of y1: "; cin>>a>>b; y1.insert(a,b); cout<<"continue?(n' to quit)";cin>>c; } while(c!='n'); cout<<"y1 = "; y1.print(); do { cout<<"input the coefficient and exponent of y2: "; cin>>a>>b; y2.insert(a,b); cout<<"continue?(n' to quit)";cin>>c; } while(c!='n'); cout<<"y2 = "; y2.print(); polynomial result(y1,y2); cout<<"result = "; result.print(); return 0; }
感谢自己又坚持了一天!
加油!
原文链接:/datastructure/382884.html