📄 polynomial.h
字号:
#ifndef POLYNOMIAL_H__
#define POLYNOMIAL_H__
#include "SList.h"
struct Term {
/* 默认构造函数
*/
Term()
: coef(0), expn(0) {}
/* 带参数的构造函数
* c: 系数 e: 指数
*/
Term(double c, int e)
: coef(c), expn(e) {}
/* 比较指数值的大小
* 返回值 == +1: 指数值 > rhs.coef
* 返回值 == 0: 指数值 == rhs.coef
* 返回值 == -1: 指数值 < rhs.coef
*/
int compareTo(Term rhs) const {
if ( expn > rhs.expn )
return +1;
else
if ( expn < rhs.expn )
return -1;
else
return 0;
} // compareTo(Term) const
double coef; // 系数
int expn; // 指数
}; // Term
class Polynomial { // 一元多项式
private:
mutable SList<Term> list_; // 内部表示: Term类型的单链表
// * 由于内部链表的实现不完善, 没有const迭代器
// * 致使某些const成员函数无法正常编译,
// * 故此处将其设为mutable
public:
/* 默认构造函数
*/
Polynomial() {}
/* 拷贝构造函数, 实现Polynomial的值语义 (SList为句柄语义)
*/
Polynomial(const Polynomial& that)
: list_( that.list_.clone() ) {}
/* 赋值函数
*/
Polynomial& operator=(const Polynomial& that) {
list_ = that.list_.clone();
return *this;
} // operator=(const Polynomial&)
/* 本多项式加上项e
*/
void add(Term e);
/* 本多项式加上多项式rhs
*/
void add(const Polynomial& rhs);
/* 本多项式减去项e
*/
void sub(Term e) {
e.coef = -e.coef;
add(e); // 减去e就是加上-e
} // sub(Term e)
/* 本多项式减去多项式rhs
*/
void sub(const Polynomial& rhs);
/* 本多项式乘以项e
*/
void mul(Term e);
/* 本多项式乘以多项式rhs
*/
void mul(const Polynomial& rhs);
/* 在cout打印一元多项式
*/
void print() const;
/* 查询多项式中的项数
*/
int length() const {
return list_.size();
} // size() const
}; // Polynomial
#endif // POLYNOMIAL_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -