![一元多項(xiàng)式相加實(shí)驗(yàn)報(bào)告_第1頁](http://file4.renrendoc.com/view/a32d4c16a060065822543cb307419179/a32d4c16a060065822543cb3074191791.gif)
![一元多項(xiàng)式相加實(shí)驗(yàn)報(bào)告_第2頁](http://file4.renrendoc.com/view/a32d4c16a060065822543cb307419179/a32d4c16a060065822543cb3074191792.gif)
![一元多項(xiàng)式相加實(shí)驗(yàn)報(bào)告_第3頁](http://file4.renrendoc.com/view/a32d4c16a060065822543cb307419179/a32d4c16a060065822543cb3074191793.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
一元多項(xiàng)式相加實(shí)驗(yàn)報(bào)告一元多項(xiàng)式的相加一實(shí)驗(yàn)內(nèi)容根據(jù)所學(xué)的數(shù)據(jù)結(jié)構(gòu)中線性結(jié)構(gòu)(線性表)的邏輯特性和物理特性及相關(guān)法,應(yīng)用于求解一個(gè)具體的實(shí)際問題 兩個(gè)多項(xiàng)式相加二需求分析掌握線性結(jié)構(gòu)的邏輯特性和物理特性。建立一元多項(xiàng)式。將一元多項(xiàng)式輸入,并存儲(chǔ)在內(nèi)存中,并按照指數(shù)降序排列輸出多項(xiàng)式。能夠完成兩個(gè)多項(xiàng)式的加減運(yùn)算,并輸出結(jié)果。三概要設(shè)計(jì)本程序所用到的抽象數(shù)據(jù)類型:typedefOrderedLinkList polynomial;//用帶表頭結(jié)點(diǎn)的有序鏈表表示多項(xiàng)式結(jié)點(diǎn)的數(shù)據(jù)元素類型定義為:typedefstruct{//項(xiàng)的表示floatcoef;//系數(shù)int expn;//指數(shù)term,ElemType;VoidAddPolyn(polynomail&Pa,polynomail&Pb)PositionGetHead()PositionNextPos(LinkListL,Linkp)ElemGetCurElem(Linkp)intcmp(terma termb)StatusSetCurElem(Link&p,ElemTypee)StatusDelFirst(Linkh,Link&q)StatusListEmpty(LinkListL)StatusAppend(LinkList&L,LinkFreeNode()存儲(chǔ)結(jié)構(gòu)coefcoefexpnext項(xiàng)式的相加相減操作。模塊劃分a)主程序;2)初始化單鏈表;3)建立單鏈表;4)相加多項(xiàng)式a)主程序;2)初始化單鏈表;3)建立單鏈表;4)相加多項(xiàng)式主程序流程圖開始開始申請(qǐng)結(jié)點(diǎn)空間輸入多項(xiàng)式各項(xiàng)的系數(shù)X,指數(shù)Y輸出已輸出的多項(xiàng)式否是否輸入正確合并同類項(xiàng)結(jié)束四詳細(xì)設(shè)計(jì)根據(jù)一元多項(xiàng)式相加的運(yùn)算規(guī)則:對(duì)于兩個(gè)一元多項(xiàng)式中所有指數(shù)相同的項(xiàng),對(duì)應(yīng)系數(shù)相加,若其和不為零,則構(gòu)成“和多項(xiàng)式”中的一項(xiàng),對(duì)PolyAddpapb所指的兩個(gè)多項(xiàng)式相加,結(jié)果為paqaqb分別從多項(xiàng)式的首項(xiàng)開始掃描2-5-1qa和qb可能出現(xiàn)下列三種情況之一:qa->expqb->exp,qa繼續(xù)向后掃描。qa->expqb->exp,則將其系數(shù)相加。若相加結(jié)果不為零,將結(jié)果qa->coefqbqaqbqa、qb繼續(xù)向后掃描。qa->expqb->exp,qbqa所指結(jié)點(diǎn)之前,然后qa、qb繼續(xù)向后掃描。qaqbpa指向的鏈表即為兩個(gè)多項(xiàng)式之和。五源程序代碼#include<stdio.h>#include<malloc.h>#include<stdlib.h>#defineNULL0typedefstructNODE{float coef; //系數(shù)int expn; //指數(shù)structNODE*next;}NODE;NODE*Creat(intn);voidprint(NODENODE*AddPolyn(NODE*head1,NODE*head2);NODE*Delfirst(NODE*head,NODE*q);voidInsertBefore(NODE*p1,NODEint compare(inta,intb);main(){NODE*head1,*head2,*head3;intn1,n2;printf("請(qǐng)輸入你需要的多項(xiàng)數(shù)的數(shù)目n1 :");scanf("%d",&n1);head1=Creat(n1);printf("第一個(gè)多項(xiàng)式的顯示:\n");print(head1);printf("\n請(qǐng)輸入你需要的多項(xiàng)數(shù)的數(shù)目n2 :scanf("%d",&n2);head2=Creat(n2);printf("\n第二個(gè)多項(xiàng)式的顯示:print(head2);head3=AddPolyn(head1,head2);printf("\n合并后的多項(xiàng)式的顯示:print(head3);printf("\n");}/*創(chuàng)建鏈表*/NODE*Creat(intn){NODE*current,*previous,*head;inti;head=(NODE*)malloc(sizeof(NODE));/*創(chuàng)建頭結(jié)點(diǎn)*/previous=head;for(i=0;i<n;i++){current=(NODE*)malloc(sizeof(NODE));printf("請(qǐng)輸入系數(shù)和指數(shù):");scanf("%f%d",¤t->coef,¤t->expn);previous->next=current;previous=current;}previous->next=NULL;returnhead;}/*qaqbpb(00),pb里面由InsertBefore和Delfirst兩個(gè)小模塊組成一部分NODE *AddPolyn(NODE*head1,NODE*head2){NODE*ha,*hb,*qa,*qb;inta,b;floatsum;ha=head1; /*hahb指向頭結(jié)點(diǎn)hb=head2;qa=ha->next; /*qaqb指向頭結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)qb=hb->next;while(qa&&qb) /*qaqb均非空*/{a=qa->expn;b=qb->expn;switch(compare(a,b)){case-1: /*qa->expn<qb->expn*/ha=qa;qa=qa->next;break;case0:sum=qa->coef+qb->coef; /*系數(shù)的和*/if(sum!=0.0){ /*如果不是qa->coef=sum; /*改變系數(shù)*/ha=qa;}else{free(Delfirst(ha,qa));}free(Delfirst(hb,qb));qa=ha->next;qb=hb->next; /*qb釋放后要重新賦值*/break;case1: /*qa->expn>qb->Delfirst(hb,qb);InsertBefore(ha,qb); /*qbha下一個(gè)結(jié)點(diǎn)之前qb=hb->next;ha=ha->next;break;}}if(qb)ha->next=qb; /*free(head2);returnhead1;}/*比較*/intcompare(inta,intb){if(a<b)return-1;elseif(a>return1;elsereturn0;}/*刪除結(jié)點(diǎn)q*/NODE*Delfirst(NODE*p1,NODE*q){p1->next=q->next;return(q);}/*插入結(jié)點(diǎn),引入結(jié)點(diǎn)p,可以讓p插入到p2和p1之間*/voidInsertBefore(NODE*p1,NODE*p2){NODE*p;p=p1->next;p1->next=p2;p2->next=p;}/*打印,為了美觀程序分開打印*/voidprint(NODE*head){NODE*current;current=head->next;while(current->next!=NULL){printf("%0.f*x^%d+",current->coef,current->expn);current=current->next;}printf("%0.f*x^%d",current->coef,current->expn);}六調(diào)試分析
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年點(diǎn)火線圈項(xiàng)目申請(qǐng)報(bào)告模范
- 2025年建筑行業(yè)策劃策略與綠色施工協(xié)議書
- 2025年子女監(jiān)護(hù)權(quán)策劃補(bǔ)充協(xié)議的法律效力分析
- 2025年醫(yī)療器械供應(yīng)與醫(yī)療服務(wù)合作框架協(xié)議
- 2025年先進(jìn)汽車修理設(shè)施租賃合同
- 2025年停車場地承包經(jīng)營協(xié)議范本
- 2025年勞動(dòng)者家庭醫(yī)療保健策劃與子女援助協(xié)議
- 2025年?duì)幎焚r償和解協(xié)議格式
- 2025年合作導(dǎo)師協(xié)議范本
- 2025年農(nóng)業(yè)發(fā)展公司技術(shù)咨詢服務(wù)合同范本
- 春季開學(xué)安全第一課
- 《病史采集》課件
- 十大護(hù)理安全隱患
- 2025年新生兒黃疸診斷與治療研究進(jìn)展
- 廣東大灣區(qū)2024-2025學(xué)年度高一上學(xué)期期末統(tǒng)一測試英語試題(無答案)
- 失效模式和效應(yīng)分析護(hù)理
- 2025年四川中煙工業(yè)限責(zé)任公司招聘110人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年福建省莆田市數(shù)學(xué)三上期末質(zhì)量檢測模擬試題含解析
- 2025年山東菏澤投資發(fā)展集團(tuán)限公司招聘61人管理單位筆試遴選500模擬題附帶答案詳解
- 幕墻工程項(xiàng)目管理手冊(cè)
- 2025山東能源集團(tuán)新能源限公司招聘12人管理單位筆試遴選500模擬題附帶答案詳解
評(píng)論
0/150
提交評(píng)論