CPolynomial.h文件
#pragma once
/*
*Copyright© 中国地质大学(武汉) 信息工程学院
*All right reserved.
*
*文件名称:CPolynomial.h
*摘 要:利用链表结构完成多项式的表示及其运算
*
*当前版本:1.0
*作 者:邵玉胜
*完成日期:2018-04-16
*/
//多项式的类定义
#ifndef POLYNOMIAL_H_
#define POLYNOMIAL_H_
#include<iostream>
using namespace std;
struct Term //多项式节点的定义
{
float m_dCoef; //系数
int m_nExp; //指数
Term* m_pLink;
Term(float c, int e, Term *next = nullptr)
{
m_dCoef = c;
m_nExp = e;
m_pLink = next;
}
Term* InsertAfter(float c, int e);
friend ostream& operator<<(ostream&, const Term&);
};
class CPolynomial //多项式类定义
{
public:
CPolynomial() { m_pFirst = new Term(0, -1); } //构造函数,构造空链表
~CPolynomial(); //析构函数
CPolynomial(CPolynomial& R); //复制构造函数
CPolynomial& operator = (CPolynomial& R); //重载赋值运算符
int maxOrder(); //计算最大阶数
Term* getHead()const { return m_pFirst; } //取得多项式单链表的表头指针
private:
Term* m_pFirst;
friend ostream& operator <<(ostream&, const CPolynomial&);
friend istream& operator >>(istream&, CPolynomial&);
friend CPolynomial operator + (CPolynomial&, CPolynomial&);
friend CPolynomial operator *(CPolynomial&, CPolynomial&);
};
#endif
CPolynomial.cpp文件
#include"Polynomial.h"
Term* Term::InsertAfter(float c, int e)
{
//在当前由this指针指示的项(即调用此函数的对象)后面插入一个新项
m_pLink = new Term(c, e);
return m_pLink;
}
ostream& operator<<(ostream& out, const Term& term)
{
//Term的友元函数,输出一个项x的内容到输出流out中
if (term.m_dCoef == 0) return out; //零系数项,不输出
out << term.m_dCoef;
switch (term.m_nExp)