此操作实现一元多项式的基本操作
代码如下
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
struct PolyNode{
float coef; //存放系数
int exp; //存放指数
PolyNode *next;
};
class Poly{
private:
PolyNode *head = NULL;
public:
Poly(); //建立空多项式
~Poly(); //释放多项式
Poly(const Poly&); //拷贝构造函数
void Create(); //通过输入系数和指数建立多项式
void Disp(); //显示
void Simplify(); //多项式的化简
void Add(Poly &py); //多项式相加
void Substract(Poly &py); //多项式相减
Poly Multiply(Poly &py); //多项式相乘
};
//建立空多项式(带头结点)
Poly::Poly()
{
//cout << "1 \n";
head = new PolyNode;
if (!head)
throw "内存分配失败 \n";
head->next = NULL;
}
//通过输入系数和指数建立多项式
void Poly::Create()
{
bool flag;
float f;
int i;
PolyNode *p = head, *s = NULL; //作为临时变量
while (cin >> f >> i)
{
flag = true;
if (fabs(f) < 1e-6 && i == 0)
break; //结束输入
else if (fabs(f) < 1e-6) //系数等于0
continue; //结束本次循环
else if (i == 0) //指数等于0
flag = false;
//输入每一项的系数和指数
s = new PolyNode;
s->coef = f;
if (!flag)
s->exp = 0;
else
s->exp = i;
s->next = p->next;
p->next = s;
p = s;
}
}
//拷贝构造函数(防止对象在浅复制时,多次被释放产生未定义行为)
Po