还是先来题目,我们一起看看吧。
输出情况是:
#include<iostream>
using namespace std;
struct Data{
int coef;
int exp;
};
struct Node{
Data data;
Node *next;
};
class Polynomail{
public:
Polynomail(){
first = new Node;
Node *p = first,*s = NULL;
int coef,exp;
cin>>coef>>exp;
while(coef!=0){
s = new Node;
s->data.coef=coef;
s->data.exp=exp;
p->next=s;
p=s;
cin>>coef>>exp;
}
p->next= NULL;
}
Polynomail operator+( Polynomail &B){
Node *pre=first,*p=pre->next;//A
Node *qre=B.first,*q=qre->next;
Node *res=NULL;
while(p!=NULL&&q!=NULL){
if(p->data.exp<q->data.exp){//A<B
pre=p;
p=p->next;
}
else if(p->data.exp>q->data.exp){
res=q->next;
pre->next = q;
q->next = p;
pre = q;
q = res;
qre->next = q;
}
else{
p->data.coef=p->data.coef+q->data.coef;
if(p->data.coef==0){
pre->next=p->next;
delete p;
p=pre->next;
}
else{
pre = p;
p=p->next;
}
qre->next = q->next;
delete q;
q = qre->next;
}
}
if(q!=NULL){
pre->next = q;
}
return *this;
}
void Print(){
Node *p = first->next;
while(p!=NULL){
cout<<p->data.coef<<" "<<p->data.exp<<endl;
p=p->next;
}
}
private:
Node *first;
};
int main(){
char m;
cin>>m;
Polynomail A;
cin>>m;
Polynomail B;
cin>>m;
A=B+A;
A.Print();
return 0;
}
我的应题目需要要输入一些字母,但其实也没什么用,最后的运行结果如图:
OK,分享到此结束,如有不会,可以和我一起探讨,毕竟一起进步是最好的!
记得·点赞-关注哦