對於一元多項式,可以用線性表來處理,可以採用順序儲存或者是鏈式儲存
(一)一元多項式的順序儲存表示
1>.一元多項式pn(x)只儲存該一元多項式各項的係數,每個係數所對應的指數項則隱含在儲存係數的順序表的下標中。即p[0]存係數p0,對應為
2>.只儲存非零項,此時只需要儲存非零項係數和非零項指數兩部分,適合儲存非零項少的多項式。
(二)一元多項式的鏈式儲存表示
結點結構定義如下:
typedef struct polynode polynode,*polylist;
通過鍵盤輸入一組多項式的係數和指數,用尾插法建立一元多項式的鍊錶。輸入係數0為結束標誌,並約定建表時,總是按照從小到大的順序排列。
polylist ploycreate()
rear->next=null;
return(head);
}
(三)一元多項式的鏈式相加運算
演算法思想:單鏈表polya和polyb分別表示一元多項式a和b,a+b的求和運算就等同於單鏈表的插入問題。設p、q分別為指向單鏈表polya和polyb的當前項的指標,比較p、q結點的指數項,可得到規則:
1、如果p->expexp,則結點p所指的應該是「和多項式」中的一項,另指標p後移。
2、如果p->exp=q->exp,則將兩個節點中的係數相加,當和不為零的時候修改結點p的係數域,釋放q結點,若和為零則和多項式沒有此項,從polya中刪除p結點,同時釋放p和q結點。
3、若p->exp>q->exp,則結點q所指應該是「和多項式」中的一項,將q插入到結點p之前,且令指標q在原來鍊錶上後移。
void polyadd(polilist polya,polylist polyb)
else if(p->exp==q->exp)
else
}else
if(p!=null) //多項式a中還有剩餘,則將剩餘結點加到和多項式中
tail->next=p;
else //多項式b中還有剩餘,則將剩餘結點加到和多項式中
tail->next=q;
}
一元多項式的表示及相加
符號多項式的操作,已經成為表處理的典型用例。我們對多項式採用順序儲存結構,可以只儲存每項係數,指數隱含在係數的序號裡。在這種情況下,如果多項式的次數很高且變化很大,那麼便很難來確定順序儲存的最大長度,另外對記憶體空間也極為浪費。一般情況下,對於那些多項式的次數很高,但項數不多的多項式我們可以將一元n...
一元多項式的表示及相加
題目 若a a0x0 a1x1 a2x2 a3x3 anxn b b0x0 b1x1 b2x2 b3x3 bnxn 求a b 順序儲存結構的實現 實現乙個陣列每兩個元素為乙個單位,左邊指數,右邊是係數。從係數為0,一直寫到最大的那個係數。利用鍊錶的思維 上大,上移 上小,下插入上。上移名 上下相等,...
2007 08 25一元多項式的表示及相加
一元多項式的表示及相加 對於符號多項式的各種操作,實際上都可以利用線性表來處理。比較典型的是關於一元多項式的處理。在數學上,乙個一元多項式p n x 可按公升冪的形式寫成 pn x p 0 p1x p 2x 2 p 3x 3 p nx n。它實際上可以由n 1個係數唯一確定。因此,在計算機內,可以用...