作业帮 > 综合 > 作业

编写一个程序用单链表存储多项式,并实现两个多项式相加的函数?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/28 05:14:34
编写一个程序用单链表存储多项式,并实现两个多项式相加的函数?
C/C++语言
/* 多项式加法和乘法示例 */
#include
#include
#include
using namespace std;
//定义多项式的项类
class term {
public:
int coef; //多项式系数
int exp; //多项式指数
//初始化项的系数和指数
term( int c=0,int e=0):coef(c),exp(e){}
};
//定义多项式类
class PolyArith {
private:
list m_poly_list_first; //存储第一个多项式
list m_poly_list_second; //存储第二个多项式
list m_poly_list_result; //用以存储运算结果
//多项式私有成员函数,用以乘法时的调用
list Poly_add(list&poly_list_first,\
list&poly_list_second)
{
list poly_list_result; //用以存储运算结果
list::iterator iter_first = poly_list_first.begin();
list::iterator iter_second = poly_list_second.begin();
//该while循环针对两个链表迭代器都没有指到结尾的情形
while(iter_first != poly_list_first.end()&&\
iter_second != poly_list_second.end())
{
term t_temp;
term t_first = (term)*iter_first;
term t_second = (term)*iter_second;
if(t_first.exp>t_second.exp)
{
poly_list_result.push_back(t_first);
iter_first++;
}
else if(t_second.exp>t_first.exp)
{
poly_list_result.push_back(t_second);
iter_second++;
}
else
{
t_temp.coef=t_first.coef+t_second.coef;
t_temp.exp=t_first.coef;
poly_list_result.push_back(t_temp);
iter_first++;
iter_second++;
}
}
//该for循环针对第一个多项式的迭代器没有指到结尾
//第二个指到结尾的情形
for(;iter_first != poly_list_first.end();iter_first++)
{
poly_list_result.push_back(*iter_first);
}
//该for循环针对第二个多项式的迭代器没有指到结尾
//第一个指到结尾的情形
for(;iter_second != poly_list_second.end();iter_second++)
{
poly_list_result.push_back(*iter_second);
}
return poly_list_result;
}
public:
//输入函数,用以输入多项式
void Poly_input()
{
int n;
cout