1 、問題描述:
功能:設(shè)計一個一元多項式加法器。
輸入并建立多項式,實現(xiàn)兩個多項式的加法運算。
要求:
1) 界面友好,函數(shù)功能要劃分好
2) 總體設(shè)計應(yīng)畫出流程圖
3) 程序要加必要的注釋
4) 要提供程序測試方案
5) 程序一定要經(jīng)得起測試,寧可功能少一些,也要能運行起來,不能運行的程序是沒有價值的。
2 、問題的解決方案:
1) 多項式的表達:n,c1,e1,c2,e2,…cn,en,其中, n 是多項式項數(shù),ci 和ei分別是第 i 項的系數(shù)和指數(shù),序列按指數(shù)降序或者升序排列;
2)利用線性結(jié)構(gòu)存儲多項式的每一項。
3)多項式加法運算即轉(zhuǎn)化為線性表的條件歸并運算。
功能實現(xiàn)
一、設(shè)計流程:
任務(wù)設(shè)計分為三步:1、完成兩個一元多項式相加;2、對序列進行排序;3、實現(xiàn)友好的人機交互。
二、方法構(gòu)造:
????步驟一:實現(xiàn)兩個一元多項式相加,我的設(shè)計流程是,創(chuàng)建三個鏈表,依次儲存第一個多項式的系數(shù)和指數(shù),第二個多項式的系數(shù)和指數(shù),兩個多項式和/差 的系數(shù)和指數(shù)。
????如圖所示:
插入函數(shù)的具體實現(xiàn)過程
(1) 當(dāng)p結(jié)點的指數(shù)expn小于p2的指數(shù)expn就將p插入到p2的前面。

(2) 當(dāng)p結(jié)點的指數(shù)exon等于p2的指數(shù)expn就將p和p2的系數(shù)加起來合并放到p2的位置上

(3) 當(dāng)p結(jié)點的指數(shù)expn大于p2的指數(shù)expn就將p插入到p2的前面。

功能二輸出多項式(A+B).主要的方法是建立一個新的鏈表C,將A和B合并并插入C鏈表中
(1) 比較A和B中的結(jié)點如果A中結(jié)點的指數(shù)大于B中結(jié)點的指數(shù)就將A中該結(jié)點插入到C鏈表中

(2)比較A和B中的結(jié)點如過A中結(jié)點的指數(shù)小于B中結(jié)點的指數(shù)就將B中該結(jié)點插入到C鏈表中

(3) 比較A和B中的結(jié)點如過A中結(jié)點的指數(shù)等于B中結(jié)點的指數(shù)就將A和B合并為一個結(jié)點插入到C中

這兩個主要的功能就是這樣實現(xiàn)的
?? 步驟二:對序列進行排序。
??????? 排序方法我用的是冒泡排序,根據(jù)指數(shù)大小對每個結(jié)點進行排序,然后輸出,這個排序方法我想大家應(yīng)該都了解,就不多說了,想具體了解各種排序方法的同學(xué),可進入visualgo.net這個網(wǎng)站深度學(xué)習(xí)(這個網(wǎng)站也是身邊同學(xué)分享給我的);
???步驟三:實現(xiàn)良好的人機交互。
任何一個程序的設(shè)計都必須要有實用意義,否則毫無價值,任務(wù)要求是做一元稀疏多項式的加法計算器,但只能實現(xiàn)加法一個功能遠遠滿足不了實用的要求,所以我們可以添加“減、乘、除”這三個功能。減法的功能實現(xiàn)和加法基本類似,只需修改一下運算方法就行了,乘除的計算量比較大,可以遍歷第一個表的每個結(jié)點對第二個表每個結(jié)點進行‘乘/除’運算,應(yīng)給會多出來很多數(shù)據(jù),
數(shù)學(xué)基礎(chǔ)還算可以的同學(xué)可以在下面自己進行探討延伸。