资源描述
多项式合并
代码:
#include <iostream>
#include <list>
#include <iterator>
using namespace std;
class Term{
public:
int coef; //系数
int exp; //指数
Term(){};
Term(int c,int e){
coef = c;
exp = e;
}
};
void show(list<Term> slist)//显示链表
{
list<Term>::iterator iter = slist.begin();
cout<<(*iter).coef<<"x^"<<(*iter).exp;
iter++;
while(iter!= slist.end()){
cout<<"+"<<(*iter).coef<<"x^"<<(*iter).exp;
iter++;
}
cout<<endl;
}
void merge(list<Term> alist,list<Term> blist)//合并链表
{
list<Term>::iterator iter1 = alist.begin();
list<Term>::iterator iter2 = blist.begin();
list<Term> mergeList;
list<Term>::iterator iterMerge = mergeList.begin();
while(iter1!=alist.end() && iter2!=blist.end()){
if((*iter1).exp == (*iter2).exp){
Term temp = Term((*iter1).coef +(*iter2).coef,(*iter1).exp);
mergeList.push_back(temp);
iter1++;
iter2++;
}
else if((*iter1).exp > (*iter2).exp){
mergeList.push_back(*iter1);
iter1++;
}
else{
mergeList.push_back(*iter2);
iter2++;
}
}
if(iter1==alist.end()){
while(iter2!=blist.end()){
mergeList.push_back(*iter2);
iter2++;
}
}
else if(iter2==blist.end()){
while(iter1!=alist.end()){
mergeList.push_back(*iter1);
iter1++;
}
}
cout<<"H(x)=F(x)+G(x)=";
show(mergeList);
}
void main(void)
{
list<Term> f;
list<Term> g;
int arry1[]={8,7,3,5,9,2,5,1,2};
int arry2[]={7,4,2,0,6,5,4,1,0};
for(int i=0;i<4;i++)
{
Term t;
t=Term(arry1[i],arry2[i]);
f.push_back(t);
}
for(int j=4;j<9;j++)
{
Term t;
t=Term(arry1[j],arry2[j]);
g.push_back(t);
}
cout<<"F(x)=";
show(f);
cout<<"G(x)=";
show(g);
merge(f,g);
}
截图:
展开阅读全文