⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 polynomial.h

📁 一个我的数据结构解题集合
💻 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 + -