版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
/XX學(xué)院課程設(shè)計(jì)題目:〔一元多項(xiàng)式計(jì)算問題一元多項(xiàng)式計(jì)算。要求:能夠按照指數(shù)降序排列建立并輸出一元多項(xiàng)式;能夠完成兩個(gè)一元多項(xiàng)式的相加、相減.并將結(jié)果輸入。1、問題分析和任務(wù)定義<1>.任務(wù)定義:此程序需要完成如下的要求:將多項(xiàng)式按照指數(shù)降序排列建立并輸出.將兩個(gè)一元多項(xiàng)式進(jìn)行相加、相減操作.并將結(jié)果輸入。a:輸入并建立多項(xiàng)式;
b:輸出多項(xiàng)式.輸出形式為表達(dá)式的形式.并且多項(xiàng)式的指數(shù)為降序;c:多項(xiàng)式a和b相加.建立多項(xiàng)式a+b;
d:多項(xiàng)式a和b相減.建立多項(xiàng)式a-b。
e:多項(xiàng)式的輸出形式為類數(shù)學(xué)表達(dá)式。<2>.問題分析:本程序的關(guān)鍵點(diǎn)在于如何將輸入的一元多項(xiàng)式按指數(shù)的降序進(jìn)行排列.而難點(diǎn)就是將輸入的兩個(gè)一元多項(xiàng)式進(jìn)行相加、相減操作。實(shí)現(xiàn)本程序需要解決以下幾個(gè)問題:1、如何將輸入的一元多項(xiàng)式按指數(shù)的降序進(jìn)行排列;2、如何確定要輸入的多項(xiàng)式的項(xiàng)數(shù);3、如何將輸入的兩個(gè)一元多項(xiàng)式進(jìn)行顯示出來;4、如何將輸入的兩個(gè)一元多項(xiàng)式進(jìn)行相加操作;5、如何將輸入的兩個(gè)一元多項(xiàng)式進(jìn)行相減操作。次程序是鏈表的應(yīng)用.通過鏈表實(shí)現(xiàn)一元多項(xiàng)式的相加相減操作。要對(duì)一元多項(xiàng)式進(jìn)行表示:一元多項(xiàng)式的表示在計(jì)算機(jī)內(nèi)可以用鏈表來表示為了節(jié)省存儲(chǔ)空間.我們只存儲(chǔ)多項(xiàng)式中系數(shù)非0的項(xiàng)。鏈表中的每一個(gè)節(jié)點(diǎn)存放多項(xiàng)式的一個(gè)系數(shù)非0項(xiàng).它包含三個(gè)域.分別存放該項(xiàng)的系數(shù)、指數(shù)以及指向下一多項(xiàng)式項(xiàng)節(jié)點(diǎn)的指針。下圖1所示為該結(jié)點(diǎn)的結(jié)構(gòu):圖1結(jié)點(diǎn)的結(jié)構(gòu)創(chuàng)建一元多項(xiàng)式鏈表.對(duì)一元多項(xiàng)式的運(yùn)算中會(huì)出現(xiàn)各種可能情況進(jìn)行分析.實(shí)現(xiàn)一元多項(xiàng)式的相加、相減操作。2、數(shù)據(jù)結(jié)構(gòu)的選擇和概要設(shè)計(jì)本題設(shè)計(jì)要求能夠按照指數(shù)降序排列建立并輸出多項(xiàng)式;能夠完成兩個(gè)多項(xiàng)式的相加.相減.并將結(jié)果輸入。數(shù)據(jù)結(jié)構(gòu)的選用A:基于鏈表中的節(jié)點(diǎn)可以動(dòng)態(tài)生成的特點(diǎn).以及鏈表可以靈活的添加或刪除節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu).為了實(shí)現(xiàn)任意多項(xiàng)式的加法.減法.因此選擇單鏈表的結(jié)構(gòu)體.它有一個(gè)系數(shù).指數(shù).下一個(gè)指針3個(gè)元屬;例如.圖2中的兩個(gè)線性鏈表分別表示一元多項(xiàng)式和一元多項(xiàng)式。從圖中可見.每個(gè)結(jié)點(diǎn)表示多項(xiàng)式中的一項(xiàng)。圖2多項(xiàng)式表的單鏈存儲(chǔ)結(jié)構(gòu)B:本設(shè)計(jì)使用了以下數(shù)據(jù)結(jié)構(gòu):structNode{//結(jié)點(diǎn)類型floatcoef;//系數(shù)intexp;//指數(shù)};C:設(shè)計(jì)本程序需用到九個(gè)模塊.用到以下九個(gè)子函數(shù)如下:1、CreateLink<Link&L,intn>;//創(chuàng)建含有n個(gè)鏈表類型結(jié)點(diǎn)的項(xiàng).即創(chuàng)建一個(gè)n項(xiàng)多項(xiàng)式2、PrintList<LinkL>;//輸出鏈表3、PolyAdd<Link&pc,Linkpa,Linkpb>;//將兩個(gè)一元多項(xiàng)式相加4、PolySubstract<Link&pc,Linkpa,Linkpb>;//將兩個(gè)一元多項(xiàng)式相減5、CopyLink<Link&pc,Linkpa>;//把一個(gè)鏈表的內(nèi)容復(fù)制給另一個(gè)鏈表6、JudgeIfExpSame<Linkpa,Linke>;/*判斷指數(shù)是否與多項(xiàng)式中已存在的某項(xiàng)相同*/7、DestroyLink<Link&L>;8、Menu<>//菜單函數(shù)9、main<>//主程序模塊調(diào)用鏈一元多項(xiàng)式的各種基本操作模塊?!?多項(xiàng)式的輸入采用尾插法的方式.輸入多項(xiàng)式中一個(gè)項(xiàng)的系數(shù)和指數(shù).就產(chǎn)生一個(gè)新的節(jié)點(diǎn).建立起它的右指針.并用頭節(jié)點(diǎn)指向它;為了判斷一個(gè)多項(xiàng)式是否輸入結(jié)束.在輸入前先確定要輸入的項(xiàng)數(shù)?!?兩個(gè)多項(xiàng)式的加法"和多項(xiàng)式"鏈表中的結(jié)點(diǎn)無需另生成.而應(yīng)該從兩個(gè)多項(xiàng)式的鏈表中摘取。其運(yùn)算規(guī)則如下:假設(shè)指針qa和qb分別指向多項(xiàng)式A和多項(xiàng)式B中當(dāng)前進(jìn)行比較的某個(gè)結(jié)點(diǎn).則比較兩個(gè)結(jié)點(diǎn)中的指數(shù)項(xiàng).有下列3種情況:①指針qa所指結(jié)點(diǎn)的指數(shù)值<指針qb所指結(jié)點(diǎn)的指數(shù)值.則應(yīng)摘取qa指針?biāo)附Y(jié)點(diǎn)插入到"和多項(xiàng)式"鏈表中去;②指針qa所指結(jié)點(diǎn)的指數(shù)值>指針qb所指結(jié)點(diǎn)的指數(shù)值.則應(yīng)摘取指針qb所指結(jié)點(diǎn)插入到"和多項(xiàng)式"鏈表中去;③指針qa所指結(jié)點(diǎn)的指數(shù)值=指針qb所指結(jié)點(diǎn)的指數(shù)值.則將兩個(gè)結(jié)點(diǎn)中的系數(shù)相加.若和數(shù)不為零.則修改qa所指結(jié)點(diǎn)的系數(shù)值.同時(shí)釋放qb所指結(jié)點(diǎn);反之.從多項(xiàng)式A的鏈表中刪除相應(yīng)結(jié)點(diǎn).并釋放指針qa和qb所指結(jié)點(diǎn)。例如.由圖2中的兩個(gè)鏈表表示的多項(xiàng)式相加得到的"和多項(xiàng)式"鏈表如圖3所示.圖中的長方框表示已被釋放的結(jié)點(diǎn)。圖3相加得到的和多項(xiàng)式上述多項(xiàng)式的相加過程歸并兩個(gè)有序表的過程極其類似.不同之處僅在于.后者在比較數(shù)據(jù)元素時(shí)只出現(xiàn)兩種情況。因此.多項(xiàng)式相加的過程也完全可以利用線性鏈表的基本操作來完成。〔4兩個(gè)多項(xiàng)式的減法兩個(gè)多項(xiàng)式的減法實(shí)現(xiàn).是從2個(gè)多項(xiàng)式的尾部開始.2個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí).如果指數(shù)相等的話.系數(shù)就應(yīng)該相減;相減的和不為0的話.用尾插法建立一個(gè)新的節(jié)點(diǎn)。p的系數(shù)小于q的系數(shù)的話.就應(yīng)該復(fù)制q接點(diǎn)到多項(xiàng)式中。p的系數(shù)大于q的系數(shù)的話.就應(yīng)該復(fù)制p接點(diǎn)到多項(xiàng)式中.并且建立的接點(diǎn)的系數(shù)為原來的相反數(shù);當(dāng)?shù)?個(gè)多項(xiàng)式空.第1個(gè)數(shù)不為空時(shí).將第一個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生。當(dāng)?shù)?個(gè)多項(xiàng)式空.第1個(gè)數(shù)不為空時(shí).將第2個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生.并且建立的接點(diǎn)的系數(shù)為原來的相反數(shù)?!?程序流程圖:一元多項(xiàng)式相減流程圖如圖4:銷毀鏈表銷毀鏈表否P!=NULLP=pt把pb復(fù)制到pt系數(shù)變反P=p->next調(diào)用加法函數(shù)是圖4多項(xiàng)式相減流程圖一元多項(xiàng)式相加流程圖如圖5:pc=newLNodepc=newLNode、pc->next=NULLp1=p1->next、p2=p2->next復(fù)制兩個(gè)多項(xiàng)式分別到p1、p2p1!=NULLp2!=NULLp1->data.exp<p2->data.exp將p1加到pc上p1->data.exp>p2->data.exp將p2加到pc上P1系數(shù)加p2系數(shù)將p2加到pc上p1系數(shù)cofe!=0P1、p2后移刪除p1p1!=NULLp2!=NULLp->next=p1p->next=p2調(diào)用排序函數(shù)paixu<>對(duì)pc進(jìn)行排序是否是否否是是否是是否否圖5相加流程圖3、詳細(xì)設(shè)計(jì)和編碼<1>、算法思想〔1輸入并建立多項(xiàng)式——CreateLink<>
〔2輸出多項(xiàng)式.輸出形式為整數(shù)序列.序列按指數(shù)降序排列——PrintList<>
〔3多項(xiàng)式a和b相加.建立多項(xiàng)式a+b.輸出相加的多項(xiàng)式——PolyAdd<>
〔4多項(xiàng)式a和b相減.建立多項(xiàng)式a-b.輸出相減的多項(xiàng)式——PolySubstract<>用帶表頭結(jié)點(diǎn)的單鏈表存儲(chǔ)多項(xiàng)式。此程序需要完成如下的要求:將多項(xiàng)式按照指數(shù)降序排列建立并輸出.將兩個(gè)一元多項(xiàng)式進(jìn)行相加、相減操作.并將結(jié)果輸入。<2>、算法描述1、定義結(jié)點(diǎn)類型用floatcofe表示一元多項(xiàng)式的系數(shù).intexp表示一元多項(xiàng)式的指數(shù)創(chuàng)建鏈表的結(jié)點(diǎn)類型。structNode{floatcoef;//結(jié)點(diǎn)類型intexp;};2、定義鏈表的類型structLNode{polynomialdata;//鏈表類型LNode*next;};3、創(chuàng)建含有n個(gè)鏈表類型結(jié)點(diǎn)的項(xiàng).即創(chuàng)建一個(gè)n項(xiàng)多項(xiàng)式.用函數(shù)voidCreateLink<Link&L,intn>表示.創(chuàng)建頭結(jié)點(diǎn)<L->data>.exp=-1;創(chuàng)建多項(xiàng)式?jīng)]有成功.遞歸調(diào)用重新創(chuàng)建CreateLink<L,n>;4、用函數(shù)intJudgeIfExpSame<LinkL,Linke>判斷指數(shù)是否與多項(xiàng)式中已存在的某項(xiàng)相同.如果輸入的一元多項(xiàng)式有重復(fù)的指數(shù)需重新輸入。5輸出鏈表用函數(shù)voidPrintList<LinkL>表示.這個(gè)部分根據(jù)項(xiàng)系數(shù)的不同分為項(xiàng)的系數(shù)大于0的5種情況和項(xiàng)的系數(shù)小于0的5種情況。6、鏈表內(nèi)容的復(fù)制:把一個(gè)鏈表的內(nèi)容復(fù)制給另一個(gè)鏈表用函數(shù)voidCopyLink<Link&pc,Linkpa>表示。8、將多項(xiàng)式按照指數(shù)降序排列建立并輸出.本程序用冒泡排序的方法將多項(xiàng)式的指數(shù)從大到小的順序進(jìn)行排列voidpaixu<Linkhead1>對(duì)鏈表進(jìn)行排序過程中用循環(huán)來確定鏈表的長度while<head1!=NULL>{n++;head1=head1->next;}將鏈表中的元素按照從大到小的順序排列if<<p->data>.exp<<q->data>.exp>{<m->data>.coef=<p->data>.coef;<m->data>.exp=<p->data>.exp;<p->data>.coef=<q->data>.coef;<p->data>.exp=<q->data>.exp;<q->data>.coef=<m->data>.coef;<q->data>.exp=<m->data>.exp;}9、將兩個(gè)一元多項(xiàng)式相加用函數(shù)voidPolyAdd<Link&pc,Linkpa,Linkpb>表示"和多項(xiàng)式"鏈表中的結(jié)點(diǎn)無需另生成.而應(yīng)該從兩個(gè)多項(xiàng)式的鏈表中摘取。其運(yùn)算規(guī)則如下:假設(shè)指針qa和qb分別指向多項(xiàng)式A和多項(xiàng)式B中當(dāng)前進(jìn)行比較的某個(gè)結(jié)點(diǎn).則比較兩個(gè)結(jié)點(diǎn)中的指數(shù)項(xiàng).有下列3種情況:①指針qa所指結(jié)點(diǎn)的指數(shù)值<指針qb所指結(jié)點(diǎn)的指數(shù)值.則應(yīng)摘取qa指針?biāo)附Y(jié)點(diǎn)插入到"和多項(xiàng)式"鏈表中去;②指針qa所指結(jié)點(diǎn)的指數(shù)值>指針qb所指結(jié)點(diǎn)的指數(shù)值.則應(yīng)摘取指針qb所指結(jié)點(diǎn)插入到"和多項(xiàng)式"鏈表中去;③指針qa所指結(jié)點(diǎn)的指數(shù)值=指針qb所指結(jié)點(diǎn)的指數(shù)值.則將兩個(gè)結(jié)點(diǎn)中的系數(shù)相加.若和數(shù)不為零.則修改qa所指結(jié)點(diǎn)的系數(shù)值.同時(shí)釋放qb所指結(jié)點(diǎn);反之.從多項(xiàng)式A的鏈表中刪除相應(yīng)結(jié)點(diǎn).并釋放指針qa和qb所指結(jié)點(diǎn)。10、將兩個(gè)多項(xiàng)式相減10、將兩個(gè)一元多項(xiàng)式相減用函數(shù)voidPolySubstract<Link&pc,Linkpa,Linkpb>表示.兩個(gè)多項(xiàng)式的減法實(shí)現(xiàn).是從2個(gè)多項(xiàng)式的尾部開始.2個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí).如果指數(shù)相等的話.系數(shù)就應(yīng)該相減;相減的和不為0的話.用尾插法建立一個(gè)新的節(jié)點(diǎn)。p的系數(shù)小于q的系數(shù)的話.就應(yīng)該復(fù)制q接點(diǎn)到多項(xiàng)式中。p的系數(shù)大于q的系數(shù)的話.就應(yīng)該復(fù)制p接點(diǎn)到多項(xiàng)式中.并且建立的接點(diǎn)的系數(shù)為原來的相反數(shù);當(dāng)?shù)?個(gè)多項(xiàng)式空.第1個(gè)數(shù)不為空時(shí).將第一個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生。當(dāng)?shù)?個(gè)多項(xiàng)式空.第1個(gè)數(shù)不為空時(shí).將第2個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生.并且建立的接點(diǎn)的系數(shù)為原來的相反數(shù)。4、上機(jī)調(diào)試1、語法錯(cuò)誤及修改:編譯中出現(xiàn)的語法問題主要在于子函數(shù)和變量的定義.括號(hào)的配對(duì).關(guān)鍵字和函數(shù)名稱的書寫.以及一些庫函數(shù)的規(guī)范使用。這些問題均可以根據(jù)編譯器的警告提示.對(duì)應(yīng)的將其解決。2、邏輯問題修改和調(diào)整:由于一元多項(xiàng)式的計(jì)算中.在輸入多項(xiàng)式的系數(shù)和一元多項(xiàng)式的指數(shù)是會(huì)有多種情況.所以設(shè)計(jì)過程中經(jīng)常出現(xiàn)各種沒有考慮到的情況.通過查找課本和資料最終比較全面的囊括了一元多項(xiàng)式會(huì)出現(xiàn)的各種情況。3、經(jīng)驗(yàn)體會(huì):在開始看到程序題目的時(shí)候會(huì)以為一元多項(xiàng)式的加減會(huì)很簡單.可是在課程設(shè)計(jì)的過程中發(fā)現(xiàn)程序的編寫并不是開始想象的那么簡單.在這過程也中遇到了難題.比如題目的要求中要對(duì)一元多項(xiàng)式的指數(shù)進(jìn)行排序?qū)崿F(xiàn)從大到小的循序進(jìn)行輸入.所以在對(duì)指數(shù)的排序中運(yùn)行經(jīng)常出錯(cuò).最終用冒泡排序的方法解決了這個(gè)問題。5、測試結(jié)果及其分析菜單界面如圖6:圖6菜單界面創(chuàng)建要運(yùn)算的兩個(gè)一元多項(xiàng)式如圖7:圖7創(chuàng)建要運(yùn)算的兩個(gè)一元多項(xiàng)式顯示輸入的兩個(gè)多項(xiàng)式如圖8:圖8顯示輸入的兩個(gè)多項(xiàng)式將兩個(gè)一元多項(xiàng)式相加如圖9:圖9將兩個(gè)一元多項(xiàng)式相加將兩個(gè)一元多項(xiàng)式相減如圖10:圖10多項(xiàng)式相減銷毀創(chuàng)建的兩個(gè)多項(xiàng)式如圖11:圖11銷毀創(chuàng)建的兩個(gè)多項(xiàng)式6、用戶使用說明本程序運(yùn)行后出現(xiàn)菜單界面.根據(jù)菜單提示進(jìn)行操作。在創(chuàng)建多項(xiàng)式多項(xiàng)式的時(shí)候根據(jù)提示先確定要輸入的多項(xiàng)式的項(xiàng)數(shù).再依次輸入各項(xiàng)的系數(shù)和指數(shù).值得注意的時(shí)候在輸入指數(shù)的時(shí)候輸入的指數(shù)一定不能小于0.當(dāng)指數(shù)小于0的時(shí)候會(huì)提示出"你輸入有誤.指數(shù)不允許為負(fù)!"重新輸入;在輸入的項(xiàng)數(shù)中如果出現(xiàn)前面已經(jīng)輸入過的系數(shù)時(shí)會(huì)出現(xiàn)提示重新輸入。7、參考文獻(xiàn)[1]鄭莉.董淵.張瑞豐C++語言程序設(shè)計(jì)<第3版>清華大學(xué)出版社[2]王昆侖.李紅數(shù)據(jù)結(jié)構(gòu)與算法中國鐵道出版社8、附錄〔源程序#include<iostream>usingnamespacestd;structNode{floatcoef;//結(jié)點(diǎn)類型intexp;};typedefNodepolynomial;structLNode{polynomialdata;//鏈表類型LNode*next;};typedefLNode*Link;voidCreateLink<Link&L,intn>;voidPrintList<LinkL>;voidPolyAdd<Link&pc,Linkpa,Linkpb>;voidPolySubstract<Link&pc,Linkpa,Linkpb>;voidCopyLink<Link&pc,Linkpa>;intJudgeIfExpSame<Linkpa,Linke>;voidDestroyLink<Link&L>;intCompareIfNum<inti>;voidDestroyLink<Link&L>{Linkp;p=L->next;while<p>{L->next=p->next;deletep;p=L->next;}deleteL;L=NULL;}//創(chuàng)建含有n個(gè)鏈表類型結(jié)點(diǎn)的項(xiàng).即創(chuàng)建一個(gè)n項(xiàng)多項(xiàng)式voidCreateLink<Link&L,intn>{if<L!=NULL>{DestroyLink<L>;}Linkp,q,newp;L=newLNode;L->next=NULL;<L->data>.exp=-1;//創(chuàng)建頭結(jié)點(diǎn)p=L;for<inti=1;i<=n;i++>{newp=newLNode;cout<<"請(qǐng)輸入第"<<i<<"項(xiàng)的系數(shù)和指數(shù):"<<endl;cout<<"系數(shù):";cin>><newp->data>.coef;cout<<"指數(shù):";cin>><newp->data>.exp;if<newp->data.exp<0>{cout<<"您輸入有誤.指數(shù)不允許為負(fù)值!"<<endl;deletenewp;i--;continue;}newp->next=NULL;p=L;if<newp->data.coef==0>{cout<<"系數(shù)為零.重新輸入!"<<endl;deletenewp;i--;continue;}while<<p->next!=NULL>&&<<p->next->data>.exp><newp->data>.exp>>{p=p->next;//p指向指數(shù)最小的那一個(gè)}q=p->next;if<!JudgeIfExpSame<L,newp>>{p->next=newp;newp->next=q;}else{cout<<"輸入的該項(xiàng)指數(shù)與多項(xiàng)式中已存在的某項(xiàng)相同,請(qǐng)重新創(chuàng)建一個(gè)正確的多項(xiàng)"<<endl;deletenewp;DestroyLink<L>;CreateLink<L,n>;//創(chuàng)建多項(xiàng)式?jīng)]有成功.遞歸調(diào)用重新創(chuàng)建break;}}}/*判斷指數(shù)是否與多項(xiàng)式中已存在的某項(xiàng)相同*/intJudgeIfExpSame<LinkL,Linke>{Linkp;p=L->next;while<p!=NULL&&<e->data.exp!=p->data.exp>>p=p->next;if<p==NULL>return0;elsereturn1;}/*輸出鏈表*/voidPrintList<LinkL>{Linkp;if<L==NULL||L->next==NULL>cout<<"該一元多項(xiàng)式為空!"<<endl;else{p=L->next;//項(xiàng)的系數(shù)大于0的5種情況if<<p->data>.coef>0>{if<<p->data>.exp==0>cout<<<p->data>.coef;elseif<<p->data>.coef==1&&<p->data>.exp==1>cout<<"x";elseif<<p->data>.coef==1&&<p->data>.exp!=1>cout<<"x^"<<<p->data>.exp;elseif<<p->data>.exp==1&&<p->data>.coef!=1>cout<<<p->data>.coef<<"x";elsecout<<<p->data>.coef<<"x^"<<<p->data>.exp;}//項(xiàng)的系數(shù)小于0的5種情況if<<p->data>.coef<0>{if<<p->data>.exp==0>cout<<<p->data>.coef;elseif<p->data.coef==-1&&p->data.exp==1>cout<<"-x";elseif<p->data.coef==-1&&p->data.exp!=1>cout<<"-x^"<<p->data.exp;elseif<p->data.exp==1>cout<<p->data.coef<<"x";elsecout<<<p->data>.coef<<"x^"<<<p->data>.exp;}p=p->next;while<p!=NULL>{if<<p->data>.coef>0>{if<<p->data>.exp==0>cout<<"+"<<<p->data>.coef;elseif<<p->data>.exp==1&&<p->data>.coef!=1>cout<<"+"<<<p->data>.coef<<"x";elseif<<p->data>.exp==1&&<p->data>.coef==1>cout<<"+"<<"x";elseif<<p->data>.coef==1&&<p->data>.exp!=1>cout<<"+"<<"x^"<<<p->data>.exp;elsecout<<"+"<<<p->data>.coef<<"x^"<<<p->data>.exp;}if<<p->data>.coef<0>{if<<p->data>.exp==0>cout<<<p->data>.coef;elseif<p->data.coef==-1&&p->data.exp==1>cout<<"-x";elseif<p->data.coef==-1&&p->data.exp!=1>cout<<"-x^"<<p->data.exp;elseif<p->data.exp==1>cout<<p->data.coef<<"x";elsecout<<<p->data>.coef<<"x^"<<<p->data>.exp;}p=p->next;}}cout<<endl;}/*把一個(gè)鏈表的內(nèi)容復(fù)制給另一個(gè)鏈表*/voidCopyLink<Link&pc,Linkpa>{Linkp,q,r;pc=newLNode;pc->next=NULL;r=pc;p=pa;while<p->next!=NULL>{q=newLNode;q->data.coef=p->next->data.coef;q->data.exp=p->next->data.exp;r->next=q;q->next=NULL;r=q;p=p->next;}}//對(duì)鏈表進(jìn)行排序voidpaixu<Linkhead1>{Linkm,p1,p,q;m=newLNode;intn,i,j;p1=head1;while<head1!=NULL>{//用循環(huán)來確定鏈表的長度n++;head1=head1->next;}head1=p1;head1=head1->next;for<p=head1;p!=NULL;p=p->next>//冒泡排序for<q=p->next;q!=NULL;q=q->next>if<<p->data>.exp<<q->data>.exp>{//將鏈表中的元素按照從大到小的順序排列<m->data>.coef=<p->data>.coef;<m->data>.exp=<p->data>.exp;<p->data>.coef=<q->data>.coef;<p->data>.exp=<q->data>.exp;<q->data>.coef=<m->data>.coef;<q->data>.exp=<m->data>.exp;}head1=p1;}/*將兩個(gè)一元多項(xiàng)式相加*/voidPolyAdd<Link&pc,Linkpa,Linkpb>{Linkp1,p2,p,pd;CopyLink<p1,pa>;CopyLink<p2,pb>;pc=newLNode;pc->next=NULL;p=pc;p1=p1->next;p2=p2->next;while<p1!=NULL&&p2!=NULL>{if<p1->data.exp<p2->data.exp>{p->next=p1;p=p->next;p1=p1->next;}elseif<p1->data.exp>p2->data.exp>{p->next=p2;p=p->next;p2=p2->next;}else{p1->data.coef=p1->data.coef+p2->data.coef;if<p1->data.coef!=0>{p->next=p1;p=p->next;p1=p1->next;p2=p2->next;}else{pd=p1;p1=p1->next;p2=p2->next;deletepd;}}}if<p1!=NULL>{p->next=p1;}if<p2!=NULL>{p->next=p2;}paixu<pc>;}/*將兩個(gè)多項(xiàng)式相減*/voidPolySubstract<Link&pc,Linkpa,Linkpb>{Linkp,pt;CopyLink<pt,pb>;p=pt;while<p!=NULL>{<p->data>.coef=<-<p->data>.coef>;p=p->next;}PolyAdd<pc,pa,pt>;DestroyLink<pt>;}//清屏函數(shù)voidClear<>{system<"pause">;system<"cls">;}//菜單函數(shù)voidMenu<>{cout<<"\t*\t\t*"<<endl;cout<<endl;cout<<"\t*******************一元多項(xiàng)式的簡單運(yùn)算*********************"<<endl;cout<<"\t*\t\t\t\t\t\t\t*"<<endl;cout<<"\t*\t\t1創(chuàng)建要運(yùn)算的兩個(gè)一元多項(xiàng)式\t\t*"<<endl;cout<<"\t*\t\t2將兩個(gè)一元多項(xiàng)式相加\t\t\t*"<<endl;cout<<"\t*\t\t3將兩個(gè)一元多項(xiàng)式相減\t\t\t*"<<endl;cout<<"\t*\t\t4顯示兩個(gè)一元多項(xiàng)式\t\t\t*"<<endl;cout<<"\t*\t\t5銷毀所創(chuàng)建的二個(gè)多項(xiàng)式\t\t*"<<endl;cout<<"\t*\t\t6退出\t\t\t\t\t*"<<endl;cout<<"\t*\t\t\t\t\t\t\t*"<<endl;cout<<"\t*******************一元多項(xiàng)式的簡單運(yùn)算*********************"<<endl;cout<<endl;cout<<"\t*\t\t請(qǐng)輸入你要進(jìn)行的操作〔1-6\t\t*"<<endl;}//判斷輸入的整數(shù)是不是為1到6的數(shù)字intCompareIfNum<inti>{if<i>0&&i<8>return0;elsereturn1;}voidmain<>{intn;LinkL,La=NULL,Lb=NULL;//La,Lb分別為創(chuàng)建的兩個(gè)多項(xiàng)式intchoose;while<1>{Menu<>;//調(diào)用菜單函數(shù)cin>>choose;switch<choose>{case1:cout<<"請(qǐng)輸入你要運(yùn)算的第一個(gè)一元多項(xiàng)式的項(xiàng)數(shù):"<<endl;cin>>n;if<CompareIfNum<n>==1>{cout<<"您的輸入有誤.請(qǐng)重新輸入……"<<endl;Clear<>;break;}CreateLink<La,n>;cout<<"請(qǐng)輸入你要運(yùn)算的第二個(gè)一元多項(xiàng)式的項(xiàng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024材料供應(yīng)合同模板
- 2024年度咨詢服務(wù)合同標(biāo)的:企業(yè)管理咨詢
- 2024年度城市軌道交通設(shè)備銷售合同
- 2024年度企業(yè)廣告發(fā)布合同具體條款
- 2024年品牌經(jīng)理合作協(xié)議
- 2024年雙層隔音門窗制作安裝合同
- 2024年城市供水供電設(shè)施建設(shè)與運(yùn)營合同
- 2024年度垃圾清運(yùn)服務(wù)合同
- 2024年度智能工廠設(shè)計(jì)與建造合同
- 2024年度八寶山殯儀館鮮花制品供應(yīng)商資質(zhì)審核與評(píng)估合同
- 采購、倉庫流程圖2課件
- 被執(zhí)行人生活費(fèi)申請(qǐng)書范文
- 第七單元“藝術(shù)之美”(主題閱讀)六年級(jí)語文上冊閱讀理解(統(tǒng)編版)
- 肉牛養(yǎng)殖投資計(jì)劃書
- 耐火磚砌筑方案
- 《制作個(gè)人小名片》名師教案
- 《作文寫作與文化修養(yǎng)培養(yǎng)與發(fā)展》
- 污水處理廠安全生產(chǎn)培訓(xùn)資料課件
- 攝影測量專業(yè)職業(yè)生涯規(guī)劃書
- 眩暈的中醫(yī)診治
- 小學(xué)數(shù)學(xué)四年級(jí)上冊第12周含有中括號(hào)的四則混合運(yùn)算
評(píng)論
0/150
提交評(píng)論