多項式加法 C 實現

2021-07-29 14:45:09 字數 1508 閱讀 2821

資料結構的選擇:多項式的加法和乘法運算中大量涉及到資料的插入和刪除操作,所以選用鍊錶作為儲存結構。鍊錶的每個項節點有三個域,分別是係數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個多項式。每組用若干對整數表示,依序每兩個相鄰的整數表示多項式的一項,分別是它的係數和冪。當輸入的冪為負數時,表示乙個多項式的結束。乙個多項式中各項的次序是隨機的。對每組中兩個...