多项式类的设计与实现(MFC)(2)

2019-04-09 10:27

Node *q,*p; p=head;

while (p)//删除链表 {

q=p->next; if (p) delete p; p=q; }

head=NULL; }

Node* get(int e);//读取指数为e的项,返回其指针 void set(double c,int e);//设置指数为e的项的系数为c void Create(double *c,int *e,int n);//创建多项式

friend Polynominal operator +(Polynominal a,Polynominal b);//重载+运算符 friend Polynominal operator -(Polynominal a,Polynominal b);//重载-运算符 friend Polynominal operator *(Polynominal a,Polynominal b);//重载*运算符 friend ostream& operator<<(ostream& os, const Polynominal& a); Polynominal& operator =(Polynominal a);//重载=运算符 void Print(ostream& os = cout) const; void Copy(const Polynominal &a);

void Addr(){cout<<\链表头指针值为:\private:

Node *head;//链表头指针 };

在程序中,声明了个个运算符的重载,通过Node* get(int e);读取指数为e的项,返回其指针,通过void set(double c,int e)设置指数为e的项的系数为c,多项式的的系数、指数以及指针全部采用了动态内存分配技术,这些工作都是由构造函数和Create()函数完成,它们的清理工作在析构函数中完成。

4.2 类的实现

//类实现

#include #include

- 3 -

#include #define MAXSIZE 15 struct Node//链表结点 {

int exp;//指数 double coef;//系数 Node *next; };

void Polynominal::Copy(const Polynominal &a) { //复制对象(公用函数) Node *t,*s,*p; p=a.head;s=head=0; while(p) {

t=new Node; if (head==0) head=t; t->coef=p->coef; t->exp=p->exp; p=p->next; if(s) s->next=t; s=t; }

if (s) s->next=0; }

Polynominal::Polynominal(const Polynominal& a)//复制构造函数 { Copy(a); }

void Polynominal::Create(double *c,int *e,int n)//创建多项式 { if (n<1)

cout<<\错误:要创建多项式的项数必须大于零。\\n\ else {

- 4 -

head=new Node;//创建头结点 head->coef=c[0]; head->exp=e[0]; Node *q,*p=head; for (int i=1;i

q=new Node; q->coef=c[i]; q->exp=e[i]; p->next=q; p=q; } p->next=0; } }

Node* Polynominal::get(int e)//读取指数为e的项 {

Node *p=head; while (p) {

if (p->exp==e) return p; p=p->next; }

return p;//没有找到,返回空指针 }

void Polynominal::set(double c,int e)//将指数为e系数为c的项加入多项式(原多项式无指数为e的项)

{

Node *q,*p,*t; t=new Node; t->coef=c; t->exp=e; if (head==0) {

- 5 -

head=t; head->next=0; return; }

if (e>head->exp) {

t->next=head; head=t;//插入头部 return; } p=head;

while (p && eexp) { q=p; p=p->next; } if (p) {

//新的项插入p所指结点前 t->next=p; q->next=t; }

else//插入尾部 {

q->next=t; t->next=0; } }

Polynominal operator +(Polynominal a,Polynominal b)//重载+运算符 {

Polynominal temp; Node *p,*q,*s,*t; double x;

s=new Node;temp.head=s;//先增加一个头结点

- 6 -

p=a.head; q=b.head; while (p && q) {

if (p->exp==q->exp) {

x=p->coef+q->coef; if (x!=0.0) {

t=new Node; t->exp=p->exp; t->coef=x; s->next=t; s=t; } p=p->next; q=q->next; } else {

t=new Node; if(p->exp>q->exp) {

t->coef=p->coef; t->exp=p->exp; p=p->next; } else {

t->coef=q->coef; t->exp=q->exp; q=q->next; }

s->next=t;

- 7 -


多项式类的设计与实现(MFC)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中安项目施工组织设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: