數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——一元多項(xiàng)式計(jì)算_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——一元多項(xiàng)式計(jì)算_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——一元多項(xiàng)式計(jì)算_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——一元多項(xiàng)式計(jì)算_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——一元多項(xiàng)式計(jì)算_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、成績 南京工程學(xué)院課程設(shè)計(jì)說明書(論文)題 目 一元多項(xiàng)式計(jì)算 課 程 名 稱 數(shù)據(jù)結(jié)構(gòu) 院(系、部、中心) 通信工程 專 業(yè) 計(jì)算機(jī)通信 班 級(jí) 算通111 學(xué) 生 姓 名 余丹紅 學(xué) 號(hào) 208110410 設(shè) 計(jì) 地 點(diǎn) 信息樓322 指 導(dǎo) 教 師 郝慧珍 設(shè)計(jì)起止時(shí)間:2012年12月 17日至2012 年12月18日目 錄1設(shè)計(jì)目標(biāo)12總體設(shè)計(jì)121數(shù)據(jù)結(jié)構(gòu)描述與定義122模塊設(shè)計(jì)23測試結(jié)果與分析114課程設(shè)計(jì)總結(jié)13參考文獻(xiàn):15附錄a: 源程序清單151 設(shè)計(jì)目標(biāo)通過課程設(shè)計(jì),達(dá)到理論與實(shí)際應(yīng)用相結(jié)合,提高學(xué)生組織數(shù)據(jù)及編寫大型程序的能力,使學(xué)生能夠根據(jù)數(shù)據(jù)對(duì)象的特性,掌握數(shù)

2、據(jù)組織、算法設(shè)計(jì)、算法性能分析的方法,并培養(yǎng)良好的程序設(shè)計(jì)能力。本程序是利用單鏈表來表示一元多項(xiàng)式然后實(shí)現(xiàn)各項(xiàng)指數(shù)和系數(shù)的輸入,進(jìn)行多項(xiàng)式建立,并以多項(xiàng)式的形式輸出,實(shí)現(xiàn)多項(xiàng)式的相加,相減和多項(xiàng)式的相乘這三種運(yùn)算。2總體設(shè)計(jì)21數(shù)據(jù)結(jié)構(gòu)描述與定義一元多項(xiàng)式定義系數(shù)和指數(shù)結(jié)構(gòu)如下: coefexpnnextcoef域-存放結(jié)點(diǎn)的系數(shù)值expn域-存放結(jié)點(diǎn)的指數(shù)值next域-存放結(jié)點(diǎn)的直接后繼的地址(位置)的指針域(鏈域)定義多項(xiàng)式的結(jié)構(gòu)為線性鏈表的存儲(chǔ)結(jié)構(gòu),每個(gè)結(jié)點(diǎn)包含三個(gè)元素:系數(shù)coef,指數(shù)expn和指向下一個(gè)結(jié)點(diǎn)的指針*next。通過指針,我們就可以把多個(gè)單項(xiàng)式連接起來,形式一個(gè)多項(xiàng)式,

3、需要說明的是從廣義的角度講,單項(xiàng)式也是一個(gè)多項(xiàng)式?;谝陨系姆治觯覀兌x多項(xiàng)式的數(shù)據(jù)結(jié)構(gòu)為如下結(jié)構(gòu)體形式:typedef struct polynomial float coef; /系數(shù) int expn; /指數(shù) struct polynomial *next; /下一個(gè)指針*polyn,polynomial; /polyn結(jié)構(gòu)體變量名22模塊設(shè)計(jì)從實(shí)現(xiàn)多項(xiàng)式式運(yùn)算過程的角度來分析,至少需要這樣一些子功能模塊。 多項(xiàng)式創(chuàng)建功能 多項(xiàng)式銷毀功能 多項(xiàng)式輸出功能 多項(xiàng)式的相加功能 多項(xiàng)式的相減功能 多項(xiàng)式的相乘功能定義并調(diào)用的函數(shù)有:void insert(polyn p,polyn h);

4、/將結(jié)點(diǎn)p插入鏈表hpolyn createpolyn(polyn head,int m);/創(chuàng)建鏈表(多項(xiàng)式)void destroypolyn(polyn p);/銷毀void printpolyn(polyn p);/輸出polyn addpolyn(polyn pa,polyn pb);/a+bpolyn subtractpolyn(polyn pa,polyn pb);/a-bpolyn multiplypolyn(polyn pa,polyn pb);/a*b void main()/主函數(shù)系統(tǒng)共分幾個(gè)模塊,每個(gè)模塊的算法描述及流程圖(核心模塊)1系統(tǒng)模塊圖(模塊劃分)圖1 系統(tǒng)模

5、塊劃分圖2 模塊流程圖及算法描述 分模塊流程圖(1)多項(xiàng)式的創(chuàng)建 (2)多項(xiàng)式的銷毀開始從鍵盤輸入項(xiàng)數(shù)mmnextq不為空ny結(jié)束輸出“-x(q的指數(shù))”輸出“-x”輸出“-1”輸出x(q的指數(shù))輸出“x”輸出“x”輸出x(q的指數(shù))yn(4)多項(xiàng)式的相加開始定義存儲(chǔ)和鏈表hc動(dòng)態(tài)分配空間qa=pa-nextqb=pb-nextqa!=qb?yqaqb?yqa的各個(gè)值賦給qcqa指向qa的nextqb的各個(gè)值賦給qcqb指向qb的nextnqa的系數(shù)加qb的系數(shù)賦給qc的系數(shù)qa的指數(shù)賦給qc的指數(shù)qa指向qa的nextqb指向qb的nextqc插入到hc中qc的系數(shù)不為0y釋放qc空間結(jié)束(

6、5)多項(xiàng)式的相減 (6)多項(xiàng)式的相乘開始定義存儲(chǔ)和鏈表h動(dòng)態(tài)分配空間p=p-coef*(-1)兩多項(xiàng)式相加輸出p不為0?p=p-nextyn結(jié)束開始定義存儲(chǔ)和鏈表hf動(dòng)態(tài)分配空間qa=pa-nextqb=pb-nextqb存在?qa存在?y定義存儲(chǔ)和鏈表pf動(dòng)態(tài)分配空間將qa和qb的系數(shù)相乘賦給pf的系數(shù)將qa和qb的指數(shù)相加賦給pf的指數(shù)將pf插入到hf中qb=pb-nextynqa=qa-next返回hf結(jié)束算法描述(1)多項(xiàng)式的創(chuàng)建polyn createpolyn(polyn head,int m) /建立一個(gè)頭指針為head、項(xiàng)數(shù)為m的一元多項(xiàng)式 /在主程序初始時(shí),先輸入的多項(xiàng)式中的

7、項(xiàng)數(shù)m、n 在這里為m。主程序中的pa、pb在此為headint i;/用來計(jì)數(shù) polyn p;/定義一個(gè)p鏈表 p=head=(polyn)malloc(sizeof(struct polynomial);/動(dòng)態(tài)分配空間,建立頭結(jié)點(diǎn) head-next=null; for(i=0;icoef,&p-expn); insert(p,head); /調(diào)用insert函數(shù)插入結(jié)點(diǎn)p return head;(2)多項(xiàng)式的銷毀利用循環(huán)逐漸銷毀多項(xiàng)式void destroypolyn(polyn p) /銷毀多項(xiàng)式p polyn q1,q2; q1=p-next; q2=q1-next; while

8、(q1-next)/利用循環(huán)逐漸銷毀多項(xiàng)式pfree(q1); q1=q2;/指針后移 q2=q2-next;free(q1);(3)多項(xiàng)式的輸出void printpolyn(polyn p) /輸出多項(xiàng)式polyn q=p-next; int flag=1;/項(xiàng)數(shù)計(jì)數(shù)器 if(!q) /若多項(xiàng)式為空,輸出0 putchar(0); printf(n); return; while(q) /多項(xiàng)式存在 if(q-coef0&flag!=1) putchar(+); /系數(shù)大于0且不是第一項(xiàng)if(q-coef!=1&q-coef!=-1) /系數(shù)非1或-1的普通情況 printf(%g,q-c

9、oef); /%g表示使用%e或%f,哪個(gè)輸出寬度稍短就使用哪一個(gè) if(q-expn=1) putchar(x); /若指數(shù)為1 else if(q-expn) printf(x%d,q-expn); /指數(shù)不為1 else if(q-coef=1) /系數(shù)為1的情況 if(!q-expn) putchar(1); /指數(shù)為0,則為1 else if(q-expn=1) putchar(x); /指數(shù)為1則為xelse printf(x%d,q-expn); if(q-coef=-1)/系數(shù)為-1的情況if(!q-expn) printf(-1); /指數(shù)為0,則為-1else if(q-e

10、xpn=1) printf(-x); /指數(shù)為1,則為-xelse printf(-x%d,q-expn);q=q-next; flag+; /項(xiàng)數(shù)加1 printf(n);(4)多項(xiàng)式的相加利用對(duì)a、b兩個(gè)多項(xiàng)式每一項(xiàng)分模塊討論進(jìn)行的,如a指數(shù)大或者b空,則將a項(xiàng)該節(jié)點(diǎn)插入新鏈c中,若b指數(shù)大或者a空,則將b項(xiàng)插入到c中,如若a、b兩項(xiàng)指數(shù)相等,則合并后再插入到c鏈中。polyn addpolyn(polyn pa,polyn pb) /求解并建立多項(xiàng)式a+b,返回其頭指針 polyn qa=pa-next; polyn qb=pb-next; polyn headc,hc,qc; hc=(

11、polyn)malloc(sizeof(struct polynomial);/建立頭結(jié)點(diǎn) hc-next=null; headc=hc; while(qa|qb) qc=(polyn)malloc(sizeof(struct polynomial); switch(compare(qa,qb)case 1: qc-coef=qa-coef; qc-expn=qa-expn; / a的指數(shù)大或b為空,把qa賦值給qc qa=qa-next; /qa指向下一個(gè) break;case 0: qc-coef=qa-coef+qb-coef; qc-expn=qa-expn; /qc等于qa與qb的和

12、 qa=qa-next; qb=qb-next; /qa,qb都分別指向下一個(gè) break;case -1: qc-coef=qb-coef; /b的指數(shù)大或a為空,把qb賦值給qc qc-expn=qb-expn; qb=qb-next; /qb指向下一個(gè) break; if(qc-coef!=0) qc-next=hc-next;/qc插入到hc中去,并重新生成新的hc,到最后實(shí)現(xiàn)a與b的和 hc-next=qc; hc=qc;else free(qc);/當(dāng)相加系數(shù)為0時(shí),釋放該結(jié)點(diǎn) return headc; /返回頭指針,實(shí)現(xiàn)多項(xiàng)式a與b的相加(5)多項(xiàng)式的相減利用a-b=a+(-b

13、)來進(jìn)行的,即只將b系數(shù)取反即可。polyn subtractpolyn(polyn pa,polyn pb)/求解并建立多項(xiàng)式a-b,返回其頭指針,將pb的系數(shù)取反后調(diào)用相加的函數(shù),實(shí)現(xiàn)相減功能 polyn h=pb; polyn p=pb-next; polyn pd;while(p) /將pb的系數(shù)取反 p-coef*=-1; p=p-next; /p向后移動(dòng) pd=addpolyn(pa,h); for(p=h-next;p;p=p-next) /恢復(fù)pb的系數(shù) p-coef*=-1; return pd; /返回pd的值,實(shí)現(xiàn)a與b兩個(gè)多項(xiàng)式相減(6)多項(xiàng)式的相乘將a中的每一項(xiàng)乘b中

14、的每一項(xiàng),即系數(shù)相乘,指數(shù)相加,將它放在新節(jié)點(diǎn)中并插入新鏈h,最后返回鏈h。polyn multiplypolyn(polyn pa,polyn pb) /求解并建立多項(xiàng)式a*b,返回其頭指針 polyn hf,pf; polyn qa=pa-next; polyn qb=pb-next; hf=(polyn)malloc(sizeof(struct polynomial);/建立頭結(jié)點(diǎn) hf-next=null; for(;qa;qa=qa-next) for(qb=pb-next;qb;qb=qb-next) pf=(polyn)malloc(sizeof(struct polynomia

15、l); pf-coef=qa-coef*qb-coef; pf-expn=qa-expn+qb-expn; insert(pf,hf);/調(diào)用insert函數(shù)以合并指數(shù)相同的項(xiàng) return hf;3 測試結(jié)果與分析系統(tǒng)選擇界面如圖1圖1輸入數(shù)據(jù)為:2(enter)2(pase)3(enter)8(pase)2(enter)3(enter)5(pase)1(enter)3(pase)6(enter)7(pase)2(enter)圖2輸出菜單:如圖2圖3分別輸入a,b,c,d,e五個(gè)選項(xiàng)顯示結(jié)果:如圖4圖4輸入f,結(jié)束,顯示結(jié)果:如圖五圖54 課程設(shè)計(jì)總結(jié)一 程序總結(jié)計(jì)算一元多項(xiàng)式加法,其結(jié)果取

16、決于多項(xiàng)式的各項(xiàng)系數(shù)與指數(shù),因此程序核心是處理兩個(gè)多項(xiàng)式的系數(shù)與指數(shù)。定義結(jié)構(gòu)體將多項(xiàng)式的各項(xiàng)系數(shù)與指數(shù)存放,定義結(jié)構(gòu)體類型鏈表為程序的循環(huán)控制提供了可能,利用對(duì)鏈表的運(yùn)算來確定結(jié)果多項(xiàng)式的各項(xiàng)系數(shù)與次數(shù),同理算出相應(yīng)的冪數(shù)。鏈表是在計(jì)算機(jī)內(nèi)存中使用一組連續(xù)的存儲(chǔ)單元保存數(shù)據(jù)類型和名字相同的變量。就鏈表這種數(shù)據(jù)類型而言,在排列上采用的方法也是按序排放,先存放第一行,接著存放第二行,直到所有數(shù)據(jù)元素被存放。多項(xiàng)式采用的是鏈表形式,以犧牲一定的空間提高程序的運(yùn)行速度和可行性。采用鏈?zhǔn)浇Y(jié)構(gòu)存儲(chǔ)多項(xiàng)式,用鏈表結(jié)構(gòu)體的一個(gè)域標(biāo)記多項(xiàng)式的次數(shù),另一個(gè)域標(biāo)記多項(xiàng)式的系數(shù),程序中采用的是m表示最高次系數(shù),進(jìn)行

17、加法運(yùn)算時(shí),標(biāo)記系數(shù)域相加即為相加的對(duì)應(yīng)系數(shù),標(biāo)記指數(shù)域相同則表示為同類項(xiàng)。鏈表的特性是在中間任意位置添加刪除元素的都非常的快,不需要移動(dòng)其它的元素。鏈表顧名思義,要把各個(gè)元素鏈接起來才算撒。通常鏈表每一個(gè)元素都要保存一個(gè)指向下一個(gè)元素的指針(單鏈表)。二 錯(cuò)誤分析錯(cuò)誤產(chǎn)生的原因有很多:1. 函數(shù)定義沖突;2. 函數(shù)調(diào)用錯(cuò)誤; 3. 符號(hào)字母等輸入錯(cuò)誤;4. 鏈表的定義錯(cuò)誤;5. 變量名重復(fù)發(fā)生沖突;6. 指針指向發(fā)生錯(cuò)誤;7. 未釋放空空間;錯(cuò)誤顯示:如圖6 圖6三收獲與體會(huì)本次課程設(shè)計(jì),我查找過資料,請(qǐng)教過同學(xué),以及自己的努力,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提

18、高。更重要的是,在程序設(shè)計(jì)中,我學(xué)會(huì)了很多學(xué)習(xí)的方法,而這是日后最實(shí)用的,真的是受益匪淺。本學(xué)期的程序設(shè)計(jì)課程,我鍛煉了能力,學(xué)到很多東西,比如思考問題的角度也會(huì)從多方面著手;對(duì)自己的專業(yè)也有自己的想法在和同學(xué)的交流過程中,互動(dòng)學(xué)習(xí),將知識(shí)融會(huì)貫通。通過這次課程設(shè)計(jì),我對(duì)很多的函數(shù)有了新的認(rèn)識(shí),也學(xué)會(huì)了運(yùn)用多種函數(shù),我也明白了寫軟件的基本過程和基本方法。在程序的設(shè)計(jì)過程中遇到了很多的困難,在程序一次一次的調(diào)試失敗下曾經(jīng)想過要放棄,我最后還是讓自己堅(jiān)持下來,毫不畏懼困難,在同學(xué)的幫助與講解下我總算是順利的完成了程序的課程設(shè)計(jì)。另外也需要提出的是在這次程序設(shè)計(jì)的過程中,非常感謝老師對(duì)我們的耐心指導(dǎo)

19、。老師在教學(xué)過程中表現(xiàn)出來的對(duì)學(xué)術(shù)專研一絲不茍的精神讓我非常有收獲。在這幾天的編寫過程中我對(duì)語言有了更進(jìn)一步的認(rèn)識(shí)和了解,也感受到了編程給我?guī)淼目鞓放c充實(shí),明白了想成為一個(gè)合格的甚至是優(yōu)秀的程序員,我還需要更多更難的鍛煉。所以我還要不斷地學(xué)習(xí)不斷地學(xué)習(xí),不斷地成長。參考文獻(xiàn):1嚴(yán)蔚敏,吳偉民數(shù)據(jù)結(jié)構(gòu)(c語言版)北京:清華大學(xué)出版社,19972朱戰(zhàn)立 數(shù)據(jù)結(jié)構(gòu)西安:西安電子科技大學(xué)出版社,20043嚴(yán)蔚敏,吳偉民 數(shù)據(jù)結(jié)構(gòu)題集(c語言版)北京:清華大學(xué)出版社,2000附錄a: 源程序清單#include#include#include/定義多項(xiàng)式數(shù)據(jù)結(jié)構(gòu)typedef struct polyn

20、omial float coef; /系數(shù) int expn; /指數(shù) struct polynomial *next; /下一個(gè)指針*polyn,polynomial; /polyn結(jié)構(gòu)體變量名void insert(polyn p,polyn h);/將結(jié)點(diǎn)p插入鏈表hpolyn createpolyn(polyn head,int m);/創(chuàng)建鏈表(多項(xiàng)式)void destroypolyn(polyn p);/銷毀void printpolyn(polyn p);/輸出int compare(polyn a,polyn b);/比較a,b的指數(shù)大小,為下面a+b做鋪墊polyn add

21、polyn(polyn pa,polyn pb);/a+bpolyn subtractpolyn(polyn pa,polyn pb);/a-bpolyn multiplypolyn(polyn pa,polyn pb);/a*b /*主函數(shù)*/void main() int m,n,a,x;char flag; polyn pa=0,pb=0,pc;/system(color f5);/字體顏色system(color 5f);/背景顏色printf(n);printf(*w e l c o m e*nn);printf(*【歡迎使用簡便式一元多項(xiàng)式計(jì)算程序】*nn);printf(*nn)

22、;printf(*【使用說明:您可建立a,b兩個(gè)多項(xiàng)式,并進(jìn)行相加、相減、相乘三種運(yùn)算】*nn);printf(*nn);printf(*【請(qǐng)按以下提示請(qǐng)輸入您所需的數(shù)據(jù)】*nn);printf(請(qǐng)輸入a的項(xiàng)數(shù):); scanf(%d,&m); pa=createpolyn(pa,m);/建立多項(xiàng)式a printf(請(qǐng)輸入b的項(xiàng)數(shù):); scanf(%d,&n); pb=createpolyn(pb,n);/建立多項(xiàng)式bsystem(cls);printf(n);printf(*n);printf(* a.【輸出多項(xiàng)式a】*n);printf(* b.【輸出多項(xiàng)式b】*n);printf(*

23、c.【 輸出a+b 】*n);printf(* d.【 輸出a-b 】*n);printf(* e.【 輸出a*b 】*n);printf(* f.【 退出程序 】*n); printf(*n);while(1) printf(n請(qǐng)選擇操作:); scanf( %c,&flag);/空格符號(hào)一定要注意switch(flag)casea:casea:printf(n 多項(xiàng)式a=);printpolyn(pa);break;caseb:caseb:printf(n 多項(xiàng)式b=);printpolyn(pb);break;casec:casec:pc=addpolyn(pa,pb); printf(

24、n a+b=);printpolyn(pc);break;cased:cased:pc=subtractpolyn(pa,pb);printf(n a-b=);printpolyn(pc);break;casee:casee:pc=multiplypolyn(pa,pb);printf(n a*b=);printpolyn(pc);break;casef:casef:system(cls);printf(n);printf(n);printf(t*nn);printf(t* 感謝使用此程序 *nn);printf(t* o(_)o *nn);printf(t* 再 見 *nn);printf(

25、t* made by ydh *nn);printf(t*nn);destroypolyn(pa);destroypolyn(pb);return;default:printf(n 您的選擇錯(cuò)誤,請(qǐng)重新選擇!n);/*合并兩個(gè)多項(xiàng)式*/void insert(polyn p,polyn h) /將兩個(gè)多項(xiàng)式合并的算法,即將p插入h來實(shí)現(xiàn) if(p-coef=0) free(p);/系數(shù)為0的話釋放結(jié)點(diǎn) else polyn q1,q2; q1=h; q2=h-next; while(q2&p-expnexpn)/查找插入位置,直到p結(jié)點(diǎn)指數(shù)大于等于h結(jié)點(diǎn) q1=q2; q2=q2-next;

26、if(q2&p-expn=q2-expn)/將指數(shù)相同相合并,指數(shù)相等時(shí),系數(shù)相加 q2-coef+=p-coef; free(p); if(!q2-coef)/系數(shù)為0的話釋放結(jié)點(diǎn) q1-next=q2-next;/將q2釋放掉 free(q2); else/指數(shù)為新時(shí)將結(jié)點(diǎn)插入 p-next=q2; /將p結(jié)點(diǎn)插入到h中去 q1-next=p;/*建立一元多項(xiàng)式*/polyn createpolyn(polyn head,int m) /建立一個(gè)頭指針為head、項(xiàng)數(shù)為m的一元多項(xiàng)式 /在主程序初始時(shí),先輸入的多項(xiàng)式中的項(xiàng)數(shù)m、n 在這里為m。主程序中的pa、pb在此為headint i;

27、/用來計(jì)數(shù) polyn p;/定義一個(gè)p鏈表 p=head=(polyn)malloc(sizeof(struct polynomial);/動(dòng)態(tài)分配空間,建立頭結(jié)點(diǎn) head-next=null; for(i=0;icoef,&p-expn); insert(p,head); /調(diào)用insert函數(shù)插入結(jié)點(diǎn)p return head;/*銷毀多項(xiàng)式*/void destroypolyn(polyn p) /銷毀多項(xiàng)式p polyn q1,q2; q1=p-next; q2=q1-next; while(q1-next)/利用循環(huán)逐漸銷毀多項(xiàng)式pfree(q1); q1=q2;/指針后移 q2

28、=q2-next;free(q1);/*輸出多項(xiàng)式*/void printpolyn(polyn p) /輸出多項(xiàng)式polyn q=p-next; int flag=1;/項(xiàng)數(shù)計(jì)數(shù)器 if(!q) /若多項(xiàng)式為空,輸出0 putchar(0); printf(n); return; while(q) /多項(xiàng)式存在 if(q-coef0&flag!=1) putchar(+); /系數(shù)大于0且不是第一項(xiàng)if(q-coef!=1&q-coef!=-1) /系數(shù)非1或-1的普通情況 printf(%g,q-coef); /%g表示使用%e或%f,哪個(gè)輸出寬度稍短就使用哪一個(gè) if(q-expn=1)

29、 putchar(x); /若指數(shù)為1 else if(q-expn) printf(x%d,q-expn); /指數(shù)不為1 else if(q-coef=1) /系數(shù)為1的情況 if(!q-expn) putchar(1); /指數(shù)為0,則為1 else if(q-expn=1) putchar(x); /指數(shù)為1則為xelse printf(x%d,q-expn); if(q-coef=-1)/系數(shù)為-1的情況if(!q-expn) printf(-1); /指數(shù)為0,則為-1else if(q-expn=1) printf(-x); /指數(shù)為1,則為-xelse printf(-x%d,

30、q-expn);q=q-next; flag+; /項(xiàng)數(shù)加1 printf(n);/*分模塊討論*/int compare(polyn a,polyn b) if(a&b) if(a-expnb-expn) return 1; /b為空或a的指數(shù)大 else if(a-expnexpn) return -1; /a為空或者b的指數(shù)大else return 0; else if(!a&b) return -1;/a多項(xiàng)式已空,但b多項(xiàng)式非空else return 1;/b多項(xiàng)式已空,但a多項(xiàng)式非空 /*建立多項(xiàng)式a+b*/polyn addpolyn(polyn pa,polyn pb) /求解并建立多項(xiàng)式a+b,返回其頭指針 polyn qa=pa-next; polyn qb=pb-next; polyn headc,hc,qc; hc=(polyn)malloc(sizeof(struct polynomial);/建立頭結(jié)點(diǎn) hc-next=null; headc=hc; while(qa|qb) qc=(polyn)malloc(sizeof(struct polynomial); switch(compare(qa,qb)case 1: qc-coef=qa-coef; qc-expn=qa-expn; / a的指數(shù)大或

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論