資源描述:
《數(shù)據(jù)結(jié)構(gòu)線性表及其應(yīng)用實(shí)驗(yàn).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、實(shí)驗(yàn).線性表及其應(yīng)用【問題描述】用C或C++語言設(shè)計(jì)并實(shí)現(xiàn)一個(gè)一元稀疏多項(xiàng)式的簡單計(jì)算器?!净疽蟆恳辉∈瓒囗?xiàng)式簡單計(jì)算器的基本功能是:1.入并建立多項(xiàng)式出多項(xiàng)式,序列按指數(shù)降序排列2.項(xiàng)式A(x)和B(x)相加,并建立多項(xiàng)式A(x)+B(x)3.項(xiàng)式A(x)和B(x)相減,并建立多項(xiàng)式A(x)-B(x)定x的值,4.計(jì)算多項(xiàng)式項(xiàng)式A(x)和B(x)相乘,建立多項(xiàng)【實(shí)現(xiàn)提示】I.元稀疏多項(xiàng)式四則運(yùn)算II.用帶頭結(jié)點(diǎn)的單鏈表作為多項(xiàng)式的存儲(chǔ)結(jié)構(gòu)III.項(xiàng)式的輸出形式為類數(shù)學(xué)表達(dá)式,例如,多項(xiàng)式34x100+45x60
2、-4x2+3的輸出形式為:34X^100+45X^60-4X^2+3。注意,系數(shù)值為1的非零次項(xiàng)的輸出形式中略去系數(shù)1,如項(xiàng)1x2輸出形式為x2。IV.單線性方程組的求解過程將運(yùn)用到多項(xiàng)式的加、減等運(yùn)算操作進(jìn)行消元,如果復(fù)雜的線性方程組,需要用矩陣運(yùn)算求解,具體算法參照工程數(shù)學(xué)線性代數(shù)部分一、【實(shí)驗(yàn)構(gòu)思(Conceive)】(10%)1.首先構(gòu)造帶頭結(jié)點(diǎn)的單鏈表作為多項(xiàng)式的存儲(chǔ)結(jié)構(gòu);2.構(gòu)造函數(shù)進(jìn)行模塊運(yùn)算;3.應(yīng)用到了算法中的抽象數(shù)據(jù)類型及鏈表的基本概念和應(yīng)用,前者的數(shù)據(jù)部分包括存儲(chǔ)多項(xiàng)式是鏈表,操作部分包括inse
3、rt().creatPloy(),addPloy(),subPloy().productPloy()printPloy()等函數(shù)。4.運(yùn)用到了多項(xiàng)式的基本運(yùn)算法則。二、【實(shí)驗(yàn)設(shè)計(jì)(Design)】(15%)一元稀疏多項(xiàng)式存儲(chǔ)結(jié)構(gòu)定義及接口函數(shù)聲明:2typedefstructLNode{float_coef;//多項(xiàng)式的系數(shù)int_expn;//多項(xiàng)式的指數(shù)structnode*_next;//指向下一個(gè)多項(xiàng)式結(jié)點(diǎn)的指針}Link;//定義了一個(gè)新的類型Link,該類型變量是指向多項(xiàng)式結(jié)點(diǎn)的指針//定義多項(xiàng)式鏈表的'結(jié)
4、點(diǎn)'存儲(chǔ)結(jié)構(gòu),每一個(gè)結(jié)點(diǎn)對(duì)應(yīng)稀疏多項(xiàng)式中的一項(xiàng)2Link*head,Link*data//定義了兩個(gè)滿足Link結(jié)構(gòu)的結(jié)點(diǎn)作為多項(xiàng)式鏈表的‘頭結(jié)點(diǎn)和鏈表中任意2head=(Link*)malloc(sizeof(Link));head->next=NULL/*根據(jù)用戶輸入的多項(xiàng)式的系數(shù)和指數(shù)floatcoef,intexpn,生成多項(xiàng)式結(jié)點(diǎn),并用head指針指向生成的新結(jié)點(diǎn)。2voidinsert(Link*head,Link*data)//構(gòu)造生成新節(jié)點(diǎn)存儲(chǔ)輸入的數(shù)據(jù),并按照降冪順序整理存儲(chǔ),構(gòu)造鏈表,存儲(chǔ)多項(xiàng)式。2
5、Link*creatPloy(charc)//構(gòu)造生成新節(jié)點(diǎn)存儲(chǔ)輸入的數(shù)據(jù),提示繼續(xù)輸入或終止輸入。2voidprintPloy(Link*f)//以多項(xiàng)式指數(shù)遞減格式輸出一元稀疏多項(xiàng)式2Link*addPloy(Link*head,Link*p)兩個(gè)一元稀疏多項(xiàng)式Pa、Pb相加,并調(diào)用前兩個(gè)函數(shù)實(shí)現(xiàn)和多項(xiàng)式的存儲(chǔ)與輸出2Link*subPloy(Link*head,Link*p)兩個(gè)一元稀疏多項(xiàng)式Pa、Pb相減,并調(diào)用前兩個(gè)函數(shù)實(shí)現(xiàn)和多項(xiàng)式的存儲(chǔ)與輸出2Link*productPloy(Link*head1,Link
6、*head2)//兩個(gè)一元稀疏多項(xiàng)式Pa、Pb乘,并調(diào)用前兩個(gè)函數(shù)實(shí)現(xiàn)和多項(xiàng)式的存儲(chǔ)與輸出三、【實(shí)現(xiàn)描述(Implement)】(25%)1.多項(xiàng)式的存儲(chǔ)部分:鏈表的定義typedefstructnode{floatcoef;//多項(xiàng)式的系數(shù)intexpn;//多項(xiàng)式的指數(shù)structnode*next;//指向下一個(gè)多項(xiàng)式結(jié)點(diǎn)的指針}Link;//定義了一個(gè)新的類型Link,該類型變量是指向多項(xiàng)式結(jié)點(diǎn)的指針2.操作部分:l主程序:通過調(diào)用多個(gè)函數(shù)實(shí)現(xiàn)兩個(gè)多項(xiàng)式的系數(shù)與指數(shù)的輸入,并按降冪順序輸出多項(xiàng)式的整體,提示選擇
7、運(yùn)算的輸入并驗(yàn)證輸入的合理性,最后通過調(diào)用insert().creatPloy(),addPloy(),subPloy().productPloy()printPloy()等函數(shù)實(shí)現(xiàn)函數(shù)的加減法及乘法的運(yùn)算。l調(diào)用函數(shù)程序及調(diào)用關(guān)系:voidinsert(Link*head,Link*data)//構(gòu)造生成新節(jié)點(diǎn)存儲(chǔ)輸入的數(shù)據(jù),并比較指數(shù)使數(shù)據(jù)按照降冪順序存儲(chǔ),構(gòu)造鏈表,存儲(chǔ)多項(xiàng)式。Link*creatPloy(charc)//構(gòu)造生成新節(jié)點(diǎn)存儲(chǔ)輸入的數(shù)據(jù),提示繼續(xù)輸入或終止輸入,并調(diào)用insert()函數(shù)把數(shù)據(jù)按降冪
8、順序存儲(chǔ)到鏈表中。voidprintPloy(Link*f)//通過整理多項(xiàng)式的鏈表中的數(shù)據(jù)按照書寫習(xí)慣依次輸出多項(xiàng)式的系數(shù)與指數(shù),得到完整的多項(xiàng)式。Link*subPloy(Link*head,Link*p)Link*productPloy(Link*head1,Link*head2)//兩個(gè)一元稀疏多項(xiàng)式Pa、Pb相加、相減、