用單鏈表儲存多項式的結點結構如下:
struct polynode
1.兩個多項式中所有指數相同的項的對應係數相加,
若和不為零,則構成「和多項式」中的一項;
2.所有指數不相同的項
均復抄到「和多項式」中。
1.若pa-
>exp>exp,
則結點pa所指的結點應是「和多項式」中的一項,將結點pa插入在結點pc之後,令指標pa、pc後移;
2.若pa-
>exp>qb-
>exp,
則結點qb所指的結點應是「和多項式」中的一項,將結點pb插入在結點pc之後,pb 、pc後移;
3.若pa-
>exp=qb-
>exp,
則將兩個結點中的係數相加, 釋放qb結點;
3.1當和不為零時修改結點pa的係數域, pa、pc後移;
3.2若和為零,釋放pa,pa後移。
1.設定四個工作指標,pa, pb, pc, p,並對其進行初始化
2.當 pa!=
null 並且pb!=
null時,重複做以下工作
2.1if(pa.exp2.2if(pa.exp>pb.exp),將pb加入到c中,之後移動pb、pc;
2.3if
(pa.exp==pb.exp)
,pa、pb的係數相加,刪除pb,pb後移
2.3.1如果和為0,刪除pa, pa後移
2.3.2否則,將和寫入到pa中,將pa加入到c中,之後,pa、pc後移;
3.如pa!=
null
,將pa鏈入c中,否則將pb鏈入c中;
void
add(linklist
&a, linklist b)
//相加為零, 該項不要
else
}else
if(a.exp>b.exp)
else}if
(pa)
pc->next=pa;
else
pc->next=pb;
對結果表示式的構造:
從空表開始,依次將a或b中結點加入到c中,完成c表的構造(尾插法構造了新的單鏈表)
資料結構 一元多項式的表示及相加
typedef struct float coef 係數 int expn 指數 term,elemtype 定義結構體 typedef linklist polynomial 用帶頭結點的有序鍊錶表示多項式 int cmp term a,term b 依a 的指數值 b 的指數值。分別返回 1 0...
資料結構 一元多項式的表示及相加
本文所有 均為偽碼,僅闡述演算法基本思想 資料結構 清華大學出版社 一元多項式的表示採用鏈式儲存結構來實現,基本操作和鍊錶的合併類似。以下為演算法部分 typedef structterm,elemtype 兩個型別名 term用於本adt,elemtype為linklist的資料物件名 type ...
一元多項式的表示及相加
符號多項式的操作,已經成為表處理的典型用例。我們對多項式採用順序儲存結構,可以只儲存每項係數,指數隱含在係數的序號裡。在這種情況下,如果多項式的次數很高且變化很大,那麼便很難來確定順序儲存的最大長度,另外對記憶體空間也極為浪費。一般情況下,對於那些多項式的次數很高,但項數不多的多項式我們可以將一元n...