一元多項式
1 、問題描述:
功能:設計一個一元多項式加法器。
輸入並建立多項式,實現兩個多項式的加法運算。
要求:
1) 介面友好,函式功能要劃分好
2) 總體設計應畫出流程圖
3) 程式要加必要的註釋
4) 要提供程式測試方案
5) 程式一定要經得起測試,寧可功能少一些,也要能執行起來,不能執行的程式是沒有價值的。
2 、問題的解決方案:
1) 多項式的表達:n,c1,e1,c2,e2,…cn,en,其中, n 是多項式項數,ci 和ei分別是第 i 項的係數和指數,序列按指數降序或者升序排列;
2)利用線性結構儲存多項式的每一項。
3)多項式加法運算即轉化為線性表的條件歸併運算。
功能實現
一、設計流程:
任務設計分為三步:1、完成兩個一元多項式相加;2、對序列進行排序;3、實現友好的人機互動。
二、方法構造:
步驟一:實現兩個一元多項式相加,我的設計流程是,建立三個連結串列,依次儲存第一個多項式的係數和指數,第二個多項式的係數和指數,兩個多項式和/差 的係數和指數。
如圖所示:
插入函式的具體實現過程
(1) 當p結點的指數expn小於p2的指數expn就將p插入到p2的前面。
(2) 當p結點的指數exon等於p2的指數expn就將p和p2的係數加起來合併放到p2的位置上
(3) 當p結點的指數expn大於p2的指數expn就將p插入到p2的前面。
功能二輸出多項式(A+B).主要的方法是建立一個新的連結串列C,將A和B合併並插入C連結串列中
(1) 比較A和B中的結點如果A中結點的指數大於B中結點的指數就將A中該結點插入到C連結串列中
(2)比較A和B中的結點如過A中結點的指數小於B中結點的指數就將B中該結點插入到C連結串列中
(3) 比較A和B中的結點如過A中結點的指數等於B中結點的指數就將A和B合併為一個結點插入到C中
這兩個主要的功能就是這樣實現的
步驟二:對序列進行排序。
排序方法我用的是氣泡排序,根據指數大小對每個結點進行排序,然後輸出,這個排序方法我想大家應該都瞭解,就不多說了,想具體瞭解各種排序方法的同學,可進入visualgo.net這個網站深度學習(這個網站也是身邊同學分享給我的);
步驟三:實現良好的人機互動。
任何一個程式的設計都必須要有實用意義,否則毫無價值,任務要求是做一元稀疏多項式的加法計算器,但只能實現加法一個功能遠遠滿足不了實用的要求,所以我們可以新增“減、乘、除”這三個功能。減法的功能實現和加法基本類似,只需修改一下運算方法就行了,乘除的計算量比較大,可以遍歷第一個表的每個結點對第二個表每個結點進行‘乘/除’運算,應給會多出來很多資料,
數學基礎還算可以的同學可以在下面自己進行探討延伸。