編寫一個程序用單鍊表存儲多項式,並實現兩個多項式相加的函數?

題目:

編寫一個程序用單鍊表存儲多項式,並實現兩個多項式相加的函數?
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

添加新評論

暱稱
郵箱
網站