----------------------------------------------------------------------
#include<iostream>
#include"Polynomial.h"
using namespace std;
//无参构造函数
Polynomial::Polynomial(){
this->head = NULL;
}
//多项式求和函数
void Polynomial::Add(Polynomial&A,Polynomial&B){
//构建sum的头节点
if(A.head->exp<B.head->exp){
this->head = A.head;
}else if(A.head->exp>B.head->exp)
{
this->head = B.head;
}else
{
PolyNode *_pn = new PolyNode();
_pn->coef = A.head->coef + B.head->coef;
_pn->exp = A.head->exp;
_pn->next = NULL;
this->head = _pn;
}
PolyNode *rear = this->head; //当前多项式链表的尾结点
PolyNode*pa = A.head->next;
PolyNode*pb = B.head->next;
while(pa!=NULL&&pb!=NULL){
//如果pa的指数小于pb的指数,取pa的指数加入头系数后面
if(pa->exp<pb->exp){
rear->next = pa;
rear = pa;
pa = pa->next;
}else if(pa->exp=pb->exp)
{
float sum = pa->coef + pb->coef;
if(sum!=0){
PolyNode *newPN = new PolyNode;
newPN->coef = sum;
newPN->exp = pa->exp;
newPN->next = NULL;
rear->next = newPN;
rear = newPN;
}
pa = pa->next;
pb = pb->next;
}else{
rear->next = pb;
rear = pb;
pb = pb->next;
}
}
if(pa!=NULL){
rear->next = pa;
}
if(pb!=NULL){
rear->next = pb;
}
}
//多项式控制台输出函数
void Polynomial::display(){
PolyNode * p = this->head;
cout<<"f=";
while(p){
if(p->coef==0){
p = p->next;
continue;
}
cout<<p->coef<<"x"<<p->exp;
p = p->next;
if(p)
cout<<"+";
}
cout<<endl;
}
网友评论