![數(shù)據(jù)結(jié)構(gòu)多項(xiàng)式相加程序?qū)嵙?xí)報告_第1頁](http://file4.renrendoc.com/view11/M03/11/3E/wKhkGWXVhIuAH0BwAAJWbqE1Nvc137.jpg)
![數(shù)據(jù)結(jié)構(gòu)多項(xiàng)式相加程序?qū)嵙?xí)報告_第2頁](http://file4.renrendoc.com/view11/M03/11/3E/wKhkGWXVhIuAH0BwAAJWbqE1Nvc1372.jpg)
![數(shù)據(jù)結(jié)構(gòu)多項(xiàng)式相加程序?qū)嵙?xí)報告_第3頁](http://file4.renrendoc.com/view11/M03/11/3E/wKhkGWXVhIuAH0BwAAJWbqE1Nvc1373.jpg)
![數(shù)據(jù)結(jié)構(gòu)多項(xiàng)式相加程序?qū)嵙?xí)報告_第4頁](http://file4.renrendoc.com/view11/M03/11/3E/wKhkGWXVhIuAH0BwAAJWbqE1Nvc1374.jpg)
![數(shù)據(jù)結(jié)構(gòu)多項(xiàng)式相加程序?qū)嵙?xí)報告_第5頁](http://file4.renrendoc.com/view11/M03/11/3E/wKhkGWXVhIuAH0BwAAJWbqE1Nvc1375.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實(shí)習(xí)一實(shí)驗(yàn)報告1、需求及規(guī)格說明本次實(shí)習(xí)要求完成一個程序,實(shí)現(xiàn)兩個多項(xiàng)式的加法。為了練習(xí)單鏈表的操作,要求對兩個多項(xiàng)式實(shí)現(xiàn)合并同類項(xiàng)。2、設(shè)計設(shè)計思想:每個節(jié)點(diǎn)有兩個數(shù)據(jù):系數(shù)和次數(shù),同時含有指向下一個節(jié)點(diǎn)的指針。在實(shí)現(xiàn)加法的時候要先判斷兩個節(jié)點(diǎn)的次數(shù)是否相同,如果相同就讓系數(shù)相加。如果相加后系數(shù)為0,則在輸出結(jié)果時要避免輸出這一項(xiàng)。設(shè)計表示:主函數(shù)main,在其中首先定義兩個多項(xiàng)式p1和p2,然后調(diào)用input函數(shù)來輸入多項(xiàng)式,接著調(diào)用print函數(shù)來輸出這兩個多項(xiàng)式。然后調(diào)用add函數(shù)來對p1和p2實(shí)現(xiàn)加法,將結(jié)果存入鏈表p。最后調(diào)用print函數(shù)輸出p(結(jié)果)。3、用戶手冊輸入時每一項(xiàng)按照“系數(shù)”+“空格符”+“次數(shù)”的格式輸入。當(dāng)整個多項(xiàng)式都輸入完畢時,請輸入“0”作為結(jié)束。4、調(diào)試報告兩個多項(xiàng)式加法的函數(shù)add是程序的核心函數(shù)。相加時要對同次數(shù)的項(xiàng)進(jìn)行合并,不相同次數(shù)的項(xiàng)直接跳過。實(shí)現(xiàn)時定義了一個臨時的鏈表,將已經(jīng)完成的部分存入該鏈表。最后,當(dāng)兩個鏈表的加法做完就返回該臨時鏈表。在相同次數(shù)項(xiàng)相加后可能會出現(xiàn)系數(shù)為0的情況。為了解決這個問題,我在輸出中加了一項(xiàng)判斷:在判斷指針不是空指針的同時判斷節(jié)點(diǎn)系數(shù)是不是0,如果是0就不再輸出。時間復(fù)雜度O(n)。5、附錄源程序代碼//polynomial.hstructpolynomial{ doublecoef;//記錄成員(系數(shù)和次數(shù),coef:系數(shù),exp:次數(shù)) doubleexp; polynomial*next;//記錄下一個結(jié)構(gòu)體對象地址 //構(gòu)造函數(shù)初始化私有數(shù)據(jù)成員 polynomial(doublec=0,doublee=0,polynomial*N=0) { coef=c; exp=e; next=N; }//構(gòu)造函數(shù)結(jié)束定義 //定義析構(gòu)函數(shù) ~polynomial(){} //析構(gòu)函數(shù)結(jié)束定義};//polynomial結(jié)構(gòu)體定義結(jié)束//polynomial.cpp#include<iostream>#include"polynomial.h"usingnamespacestd;polynomial*input()//輸入函數(shù)。{ doublecoef=0; doubleexp=0; polynomial*p; inti=1; while(true) { cout<<"第"<<i<<"項(xiàng)"<<endl; cin>>coef; if(coef==0)break; cin>>exp; if(i==1) { p=newpolynomial(coef,exp,0); } else { polynomial*q=p; polynomial*rear=0;while(q!=0&&q->exp<=exp) { rear=q; q=q->next; } if(rear==0) { p=newpolynomial(coef,exp,q); } else { if(rear->exp<exp) rear->next=newpolynomial(coef,exp,q); else rear->coef+=coef; } } i++; } returnp;}polynomial*add(polynomial*exp1,polynomial*exp2)//實(shí)現(xiàn)兩個多項(xiàng)式的加法的函數(shù)。{ if(exp1==0) returnexp2; elseif(exp2==0) returnexp1; polynomial*p1=exp1; polynomial*p2=exp2; polynomial*Result=newpolynomial(); polynomial*p3=Result; while(true) { if(p1==0&&p2!=0) { p3->coef=p2->coef; p3->exp=p2->exp; p2=p2->next; } elseif(p2==0&&p1!=0) { p3->coef=p1->coef; p3->exp=p1->exp; p1=p1->next; } elseif(p1==0&&p2==0) { p3=0; break; } elseif(p1->exp==p2->exp) { p3->coef=p1->coef+p2->coef; p3->exp=p1->exp; p1=p1->next; p2=p2->next; } elseif(p1->exp<p2->exp) { p3->coef=p1->coef; p3->exp=p1->exp; p1=p1->next; } elseif(p1->exp>p2->exp) { p3->coef=p2->coef; p3->exp=p2->exp; p2=p2->next; } if(p1!=0||p2!=0) { p3->next=newpolynomial(); p3=p3->next; } } returnResult;}voidprint(polynomial*n)//輸出一個多項(xiàng)式。{ polynomial*p=n; polynomial*q=newpolynomial(); while(true) { q->coef=p->coef; q->exp=p->exp; if(p->next!=0) { q=newpolynomial(0,0,q); p=p->next; } elsebreak; } while(q!=0&&q->coef!=0)//節(jié)點(diǎn)的系數(shù)不為0時才將該節(jié)點(diǎn)輸出。 { cout<<""<<q->coef<<"x^"<<q->exp; q=q->next; if(q!=0&&q->coef>0)//系數(shù)為正數(shù)的時候要先輸出一個“+”號。 cout<<"+"; } cout<<endl;}//main.cpp#include<iostream>#include"polynomial.h"usingnamespacestd;polynomial*add(polynomial*,polynomial*);voidprint(polynomial*);polynomial*input();voidmain(){ cout<<"該程序是為了實(shí)現(xiàn)兩個多項(xiàng)式的加法"<<endl <<"請輸入第一個式子中的系數(shù)以及次數(shù)(輸入格式:12),輸入0(只需要輸入0,不要輸入0X)結(jié)束。"<<endl; polynomial*p1=input(); cout<<"請輸入第二個式子中的系數(shù)以及次數(shù)(輸入格式:12),輸入0(只需要輸入0,不要輸入0X)結(jié)束。"<<endl; polynomial*p2=input(); cout<<endl<<"式子1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國中置電機(jī)自行車行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國PTZ電子體積校正器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國軍用飛行器模擬器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國工業(yè)木鋸機(jī)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 期末測試卷01【考試范圍:6-10單元】(原卷版)
- 2025國際商業(yè)代理合同詳細(xì)版樣本
- 擔(dān)保合同范文集錦年
- 健身房私教合同范文
- 電力設(shè)備采購合同模板
- 2025XL數(shù)字地震儀器租賃合同
- 《造血干細(xì)胞移植護(hù)理》課件
- 課題申報參考:全齡友好視角下的社區(qū)語言景觀評估及空間優(yōu)化研究
- 中央2025年公安部部分直屬事業(yè)單位招聘84人筆試歷年參考題庫附帶答案詳解
- 五年級下冊語文四大名著常考知識點(diǎn)
- 2025年1月日歷表(含農(nóng)歷-周數(shù)-方便記事備忘)
- 2024年同等學(xué)力人員申請碩士學(xué)位英語試卷與參考答案
- 臨床用血管理培訓(xùn)
- 工業(yè)自動化生產(chǎn)線操作手冊
- 《走進(jìn)神奇》說課稿
- 2024年內(nèi)蒙古中考語文試卷五套合卷附答案
- 五年級下冊語文教案 學(xué)習(xí)雙重否定句 部編版
評論
0/150
提交評論