1. 程式人生 > >一元多項式

一元多項式

、問題描述:

功能:設計一個一元多項式加法器。

輸入並建立多項式,實現兩個多項式的加法運算。

要求:

1) 介面友好,函式功能要劃分好

2) 總體設計應畫出流程圖

3) 程式要加必要的註釋

4) 要提供程式測試方案

5) 程式一定要經得起測試,寧可功能少一些,也要能執行起來,不能執行的程式是沒有價值的。


、問題的解決方案:

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這個網站深度學習(這個網站也是身邊同學分享給我的);


   步驟三:實現良好的人機互動。

任何一個程式的設計都必須要有實用意義,否則毫無價值,任務要求是做一元稀疏多項式的加法計算器,但只能實現加法一個功能遠遠滿足不了實用的要求,所以我們可以新增“減、乘、除”這三個功能。減法的功能實現和加法基本類似,只需修改一下運算方法就行了,乘除的計算量比較大,可以遍歷第一個表的每個結點對第二個表每個結點進行‘乘/除’運算,應給會多出來很多資料,

數學基礎還算可以的同學可以在下面自己進行探討延伸。