資料結構 一元多項式的表示及相加

2021-07-27 13:31:28 字數 1272 閱讀 9648

本文所有**均為偽碼,僅闡述演算法基本思想——《資料結構》清華大學出版社

一元多項式的表示採用鏈式儲存結構來實現,基本操作和鍊錶的合併類似。以下為演算法部分:

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...