📄 poly.h
字号:
//文件名Poly.h
#include <iostream>
using namespace std;
//定义结点类型
struct node
{ int exp; //指数为整型
double coef; //系数为双精度型
node *next; //指针域
};
//多项式循环链表类
class Poly
{ private: //数据成员
node *head; //循环链表头指针
public: //成员函数
Poly(); //构造函数,建立空多项式链表
void ins_Poly(); //键盘输入多项式链表
void prt_Poly(); //输出多项式链表
Poly operator +(Poly &); //多项式相加
};
//构造函数,建立空多项式链表
Poly::Poly()
{ node *p;
p=new node; //申请一个表头结点
p->exp=-1; p->next=p;
head=p;
return;
}
//键盘输入多项式链表
void Poly::ins_Poly()
{ node *p,*k;
int e;
double c;
k=head; //记住多项式链尾
cout <<"输入:系数<空格>指数。输入指数-1结束!" <<endl;
cin >>c >>e;
while (e>=0)
{ p=new node; //申请一个新结点
p->exp=e; p->coef=c; //填入指数与系数
p->next=head; //新结点链到临时多项式链尾
k->next=p;
k=p; //记住多项式链尾
cin >>c >>e;
}
return;
}
//输出多项式链表
void Poly::prt_Poly()
{ node *k;
if (head->next==head)
cout <<"空表" <<endl;
k=head->next;
while (k!=head)
{ cout <<"(" <<k->coef <<", " <<k->exp <<")" <<endl;
k=k->next;
}
return;
}
//多项式相加
Poly Poly::operator +(Poly &p2)
{ Poly p;
node *k, *q, *m, *n;
int e;
double c;
k=p.head; //记住和多项式链尾
m=head->next;
n=p2.head->next;
while ((m->exp!=-1)||(n->exp!=-1))
{ if (m->exp==n->exp) //两个链表当前结点的指数相等
{ c=m->coef+n->coef; //系数相加
e=m->exp; //复抄指数
m=m->next; n=n->next;
}
else if (m->exp>n->exp)
{ c=m->coef; e=m->exp; //复抄链表1中的系数与指数值
m=m->next;
}
else
{ c=n->coef; e=n->exp; //复抄链表2中的系数与指数值
n=n->next;
}
if (c!=0) //相加后系数不为0
{ q=new node; //申请一个新结点
q->exp=e; q->coef=c;
q->next=p.head; k->next=q;
k=q; //记住和多项式的链尾
}
}
return(p);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -