資料結構的選擇:多項式的加法和乘法運算中大量涉及到資料的插入和刪除操作,所以選用鍊錶作為儲存結構。鍊錶的每個項節點有三個域,分別是係數c、指數e和指向下一結點的指標域next。
首先定義項節點term:
class term;
term::term(int c,int e)
term::term(int c,int e,term* next)
term* term::insertafter(int c,int e)
ostream& operator
<<(ostream& out,const term &val)
return
out;
}return
out;
}
在此基礎上定義多項式類如下:
class polynominal;
polynominal::polynominal()
polynominal::~polynominal()
delete head;
}void polynominal::addterms(istream& in)
}void polynominal::output(ostream& out)const
else out <<"+"
<<*p; //else不可以省略
p = p->next;
}cout
《下面是最主要功能函式polyadd()的實現:
演算法思路:
定義指標p、q分別指向待相加多項式的最高次冪項結點,p1指向p的前驅結點,結果存放於p多項式中。
(1)p所指項指數大於q所指項時,保留p所指項。p指標右移,q不動。
(2)p所指項指數等於q所指項時,若兩項係數和不為零,將p中項係數改為兩項係數相加,p、q指標均指向下一項。係數和為零,則在p中刪除此項。p、q指標指向下一項。
(3)p所指項指數小於q所指項時,在p所指當前項前(p1後)插入q所指項。p1指向新插入的項,q指標右移一位。
void polynominal::polyadd(polynominal &r)
if(p->ee)
if(p->e==q->e)
else }}
}
幾個友元函式的實現:
ostream& operator
<<(ostream &out,const polynominal& a)
istream& operator >>(istream &in,polynominal &a)
polynominal& operator +(polynominal &a,polynominal &b)
測試程式:
#include
#include
#include
using
namespace
std;
int main()
多項式加法
題目內容 乙個多項式可以表達為x的各次冪與係數乘積的和,比如 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。程式要處理的冪最大為100。輸入格式 總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,第乙個表示冪次,第二個表示該冪次的係數...
多項式加法
題目內容 乙個多項式可以表達為x的各次冪與係數乘積的和,比如 2x6 3x5 12x3 6x 20 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。程式要處理的冪最大為100。輸入格式 總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,...
多項式加法
給定兩個多項式p x 與q x 通過鍊錶實現它們的加法。有若干組,每組有2個多項式。每組輸入時先輸入第1個多項式,再輸入第2個多項式。每組用若干對整數表示,依序每兩個相鄰的整數表示多項式的一項,分別是它的係數和冪。當輸入的冪為負數時,表示乙個多項式的結束。乙個多項式中各項的次序是隨機的。對每組中兩個...