本文所有**均為偽碼,僅闡述演算法基本思想——《資料結構》清華大學出版社
一元多項式的表示採用鏈式儲存結構來實現,基本操作和鍊錶的合併類似。以下為演算法部分:
typedef
structterm,elemtype;//兩個型別名:term用於本adt,elemtype為linklist的資料物件名
type linklist polynomial;//用帶表頭結點的有序鍊錶表示多項式
void creatpolyn(polynomail &p, int m);
//輸入m項的係數和指數,建立表示一元多項式的有序鍊錶p
void destroypolyn(polynomail &p);
//銷毀一元多項式p
void printpolyn(polynomail p);
//列印輸出一元多項式p
void polynlength(polynomail p);
//返回一元多項式p中的項數
void addpolyn(polynomail &pa, polynomail &pb);
//完成多項式相加運算,即:pa=pa+pb,並銷毀一元多項式pb
void subtractpolyn(polynomail &pa,polynomail &pb);
//完成一元多項式的相減運算,即:pa=pa-pb,並銷毀一元多項式pb
void multiplypolyn(polynomail &pa,polynomail &pb);
//完成一元多項式的相乘運算,即:pa=pa*pb,並銷毀一元多項式pb
int cmp(term a,term b);
//依a的指數值<(或=)(或》)b的指數值,分別返回-1、0、+1
//基本操作的演算法描述(部分)
void creatpolyn(polynmail &p, int m)
}}void addpolyn(polynomail &pa,polynomail &pb)else
delfirst(hb,qb);freenode(qb);qb=nextpos(pb,hb);
qa=nextpos(pa,ha);break;
case
1://多項式pb中的當前結點的指數值小
delfirst(hb,qb); insfirst(ha,qb);
qb = nextpos(pb,hb); ha=nextpos(pa,ha); break;}}
freenode(hb);//釋放pb的頭結點
}
資料結構 一元多項式的表示及相加
typedef struct float coef 係數 int expn 指數 term,elemtype 定義結構體 typedef linklist polynomial 用帶頭結點的有序鍊錶表示多項式 int cmp term a,term b 依a 的指數值 b 的指數值。分別返回 1 0...
資料結構 一元多項式的表示及相加
用單鏈表儲存多項式的結點結構如下 struct polynode 1.兩個多項式中所有指數相同的項的對應係數相加,若和不為零,則構成 和多項式 中的一項 2.所有指數不相同的項 均復抄到 和多項式 中。1.若pa exp exp,則結點pa所指的結點應是 和多項式 中的一項,將結點pa插入在結點pc...
一元多項式的表示及相加
符號多項式的操作,已經成為表處理的典型用例。我們對多項式採用順序儲存結構,可以只儲存每項係數,指數隱含在係數的序號裡。在這種情況下,如果多項式的次數很高且變化很大,那麼便很難來確定順序儲存的最大長度,另外對記憶體空間也極為浪費。一般情況下,對於那些多項式的次數很高,但項數不多的多項式我們可以將一元n...