//有序多项式加法
#include <iostream>
using namespace std;
struct Node
  {
int coef;
int exp;
Node *next;
};
class MExpression
  {
private :
Node *first;
public :
MExpression();
void InsertNode(int coef,int exp);
void DeleteNode(int exp);
void Add(MExpression me);
void PrintAll();
};
MExpression::MExpression()
  {
first->next=NULL;
}
void MExpression::InsertNode(int coef,int exp)
  {
Node *s=new Node();
Node *p=first;
while(p->next!=NULL)
p=p->next;
s->coef=coef;
s->exp=exp;
s->next=p->next;
p->next=s;
}
void MExpression::DeleteNode(int exp)
  {
Node *p=first->next;
Node *q;
q=first;
while(p!=NULL)
 {
if (p->exp==exp) break;
q=p;
p=p->next;
}
q->next=p->next;
delete p;
}
void MExpression::Add(MExpression me)
  {
int i=0,j=0;
Node *p=first->next;
Node *q=me.first->next;
Node *pp,*qq;
pp=first;
qq=me.first;
while(p&&q)
 {
if (p->exp>q->exp)
 {
InsertNode(q->coef,q->exp);
q=q->next;
}
else if(p->exp==q->exp)
 {
p->coef+=q->coef;
p=p->next;
q=q->next;
}
else
 {
p=p->next;
}
}
while(q)
 {
InsertNode(q->coef,q->exp);
q=q->next;
}
}
void MExpression::PrintAll()
  {
cout<<"=== coef c exp e ==="<<endl;
Node *p=first->next;
while(p!=NULL)
  {
cout<<p->coef<<" c "<<p->exp<<" e ";
p=p->next;
}
}
int main()
  {
MExpression *me1=new MExpression();
MExpression *me2=new MExpression();
me1->InsertNode(1,1);
me1->InsertNode(2,2);
me1->InsertNode(3,3);
me1->InsertNode(4,4);
me2->InsertNode(1,2);
me2->InsertNode(2,3);
me2->InsertNode(3,4);
me2->InsertNode(4,5);
me1->Add(*me2);
me1->PrintAll();
}


|
|
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|
25 | 26 | 27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 |
|
常用链接
留言簿(1)
随笔分类
随笔档案
搜索
最新评论

阅读排行榜
评论排行榜
|
|