版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、池 州 學(xué) 院CHIZHOU COLLEGE 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告學(xué) 號(hào): 57 54 39 37 20 25 27 姓 名: 周田 張永鵬 武警 溫凱僑 李坤 米昌華 阮健健 班 級(jí): 10計(jì)算機(jī)科學(xué)與技術(shù)(2)班 指導(dǎo)教師: 成 績(jī): 數(shù)學(xué)與計(jì)算機(jī)科學(xué)系一、 課程設(shè)計(jì)基本情況1、設(shè)計(jì)名稱 一元多項(xiàng)式計(jì)算2、主要功能能夠按照指數(shù)降序排列建立并輸出多項(xiàng)式;能夠完成兩個(gè)多項(xiàng)式的相加、相減,并將結(jié)果輸出;3、設(shè)計(jì)平臺(tái) 電腦、Visual c+ 6.0二、 系統(tǒng)設(shè)計(jì)1、算法思想 根據(jù)一元多項(xiàng)式相加的運(yùn)算規(guī)則:對(duì)于兩個(gè)一元多項(xiàng)式中所有指數(shù)相同的項(xiàng),對(duì)應(yīng)指數(shù)相加(減),若其和(差)不為零,則構(gòu)成“和(差
2、)多項(xiàng)式”中的一項(xiàng);對(duì)于兩個(gè)一元多項(xiàng)式中所有指數(shù)不相同的項(xiàng),則分別寫(xiě)到“和(差)多項(xiàng)式”中去。 因?yàn)槎囗?xiàng)式指數(shù)最高項(xiàng)以及項(xiàng)數(shù)是不確定的,因此采用線性鏈表的存儲(chǔ)結(jié)構(gòu)便于實(shí)現(xiàn)一元多項(xiàng)式的運(yùn)算。為了節(jié)省空間,我采用兩個(gè)鏈表分別存放多項(xiàng)式a和多項(xiàng)式b,對(duì)于最后計(jì)算所得的多項(xiàng)式則利用多項(xiàng)式a進(jìn)行存儲(chǔ)。主要用到了單鏈表的插入和刪除操作。(1) 一元多項(xiàng)式加法運(yùn)算它從兩個(gè)多項(xiàng)式的頭部開(kāi)始,兩個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí),如果指數(shù)相等的話,系數(shù)就應(yīng)該相加;相加的和不為零的話,用頭插法建立一個(gè)新的節(jié)點(diǎn)。P的指數(shù)小于q的指數(shù)的話就應(yīng)該復(fù)制q的節(jié)點(diǎn)到多項(xiàng)式中。P的指數(shù)大于q的指數(shù)的話,就應(yīng)該復(fù)制p節(jié)點(diǎn)到多項(xiàng)式中。當(dāng)?shù)?/p>
3、二個(gè)多項(xiàng)式空,第一個(gè)多項(xiàng)式不為空時(shí),將第一個(gè)多項(xiàng)式用新節(jié)點(diǎn)產(chǎn)生。當(dāng)?shù)谝粋€(gè)多項(xiàng)式空,第二個(gè)多項(xiàng)式不為空時(shí),將第二個(gè)多項(xiàng)式用新節(jié)點(diǎn)產(chǎn)生。(2) 一元多項(xiàng)式的減法運(yùn)算 它從兩個(gè)多項(xiàng)式的頭部開(kāi)始,兩個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí),如果指數(shù)相等的話,系數(shù)就相減;相加的和不為零的話,用頭插法建立一個(gè)新的節(jié)點(diǎn)。p的指數(shù)小于q的指數(shù)的話,就應(yīng)該復(fù)制q的節(jié)點(diǎn)到多項(xiàng)式中。P的指數(shù)大于q的指數(shù)的話就應(yīng)該復(fù)制p的節(jié)點(diǎn)到多項(xiàng)式中,并且建立的節(jié)點(diǎn)的系數(shù)為原來(lái)的相反數(shù);當(dāng)?shù)诙€(gè)多項(xiàng)式空,第一個(gè)多項(xiàng)式不為空時(shí),將第一個(gè)多項(xiàng)式用新節(jié)點(diǎn)產(chǎn)生。當(dāng)?shù)谝粋€(gè)多項(xiàng)式空,第二個(gè)多項(xiàng)式不為空時(shí),將第二個(gè)多項(xiàng)式用新節(jié)點(diǎn)產(chǎn)生,并且建立的節(jié)點(diǎn)的系數(shù)為原
4、來(lái)的相反數(shù)。2、概要設(shè)計(jì)(1)主函數(shù)流程圖:(注:a代表第一個(gè)一元二次方程,b代表第二個(gè)一元二次方程)開(kāi) 始 定義結(jié)構(gòu)體定義函數(shù)類型及名稱 構(gòu)造指數(shù)比較函數(shù) 排列順序(降序) 用單鏈接儲(chǔ)存a,b項(xiàng)目的系數(shù)和指數(shù) 開(kāi) 始 進(jìn) 行 加 減 法 運(yùn) 算 輸 出 構(gòu) 造 出 的 多 項(xiàng) 式指數(shù)不同 輸出多項(xiàng)式,求項(xiàng)數(shù) 創(chuàng)建并初始化多項(xiàng)式鏈表 輸 入 系 數(shù) 和 指 數(shù) 指數(shù)相同合并同類項(xiàng) 按指數(shù)排序 結(jié) 束 將 單 鏈 表 的 節(jié) 點(diǎn) 釋 放,使 已 建 立 的 多 項(xiàng) 式 銷 毀a項(xiàng)的指數(shù)值=b項(xiàng)的指數(shù)值 選 擇 語(yǔ) 句a項(xiàng)指數(shù)值<b項(xiàng)指數(shù)值 輸 出 計(jì) 算 后 的 多 項(xiàng) 式摘取b的指數(shù)值到
5、“和多項(xiàng)式” 按指數(shù)值按降序排列摘取a指數(shù)值到“和多項(xiàng)式” 釋放a和b的結(jié)點(diǎn)將a和b的系數(shù)相加(減) a項(xiàng)指數(shù)值>b項(xiàng)指數(shù)值 (2)一元多項(xiàng)式計(jì)算算法用類C語(yǔ)言表示: Typedef struct00 /項(xiàng)的表示,多項(xiàng)式的項(xiàng)作為L(zhǎng)inkList的數(shù)據(jù)元素Float coef; /細(xì)數(shù)Int expn;/指數(shù)term,ElemType;/兩個(gè)類型名:term用于本ADT,ElemType為L(zhǎng)inkList的數(shù)據(jù)對(duì)象名Typedef LinkList polynomial: /用帶表頭的節(jié)點(diǎn)的有序鏈表表示多項(xiàng)式/基本操作的函數(shù)原型說(shuō)明Void CreatePolyn(polynomail&a
6、mp;P);/輸入n的系數(shù)和指數(shù),建立表示一元多項(xiàng)式的有序鏈表P 銷毀一元多項(xiàng)式PVoid DestroyPolyn(polynomailP);銷毀一元多項(xiàng)式PvoidPrintPoly(polynomail P);/打印輸入一元多項(xiàng)式PIntPolynLength(polynnomail P);/返回一元多項(xiàng)式P中的項(xiàng)數(shù)void CreatPolyn(polynomail&Pa.polunomail&Pb);/完成多項(xiàng)式相加運(yùn)算,即:Pa=Pa+Pb,并賢惠一元多項(xiàng)式PbvoidSubtractPolyn(polunomail&Papolunomail&Pb)
7、;/完成多項(xiàng)式相減運(yùn)算,即:Pa=Pa-Pb,并銷毀一元多項(xiàng)式Pb/基本操作的算法描述Int cmp(tem a,temp b);/依a的指數(shù)值<(或=)(或>b的住數(shù)值,分別返回-1、0和+1Void CreatePolyn(polynomail&P,int m)/輸入m項(xiàng)的系數(shù)和指數(shù),建立表示一元多項(xiàng)式的有序鏈表PInitList(P);h=GetHead(P);E.coef=0.0;e.expn=-1;SerCurElem(h,e);/設(shè)置頭結(jié)點(diǎn)的數(shù)據(jù)元素For (i=1;i<=m;+i)/依次輸入m個(gè)非零項(xiàng)Scanf(e.coef,e.epn);If(!Loc
8、ateElem(P,e,q,(*cmp)()/當(dāng)前鏈表中不存在該指數(shù)項(xiàng)If(MakeNode(s,e)InsFirst(q,s);/生成節(jié)點(diǎn)并插入鏈表/CreatPolun三、 詳細(xì)設(shè)計(jì)1、算法實(shí)現(xiàn)(1) 輸入一元多項(xiàng)式函數(shù):void shuchu(pnode *head) pnode *p; int one_time=1; p=head; while(p!=NULL) /*如果不為空*/ if(one_time=1) if(p->zhishu=0) /*如果指數(shù)為0的話,直接輸出系數(shù)*/ printf("%5.2f",p->xishu); /*如果系數(shù)是正的話
9、前面就要加+號(hào)*/ else if(p->xishu=1|p->xishu=-1) printf("X%d",p->zhishu); /*如果系數(shù)是1的話就直接輸出+x*/ /*如果系數(shù)是-1的話就直接輸出-x號(hào)*/ else if(p->xishu>0) /*如果系數(shù)是大于0的話就輸出+系數(shù)x指數(shù)的形式*/ printf("%5.2fX%d",p->xishu,p->zhishu); else if(p->xishu<0) /*如果系數(shù)是小于0的話就輸出系數(shù)x指數(shù)的形式*/ printf("
10、;%5.2fX%d",p->xishu,p->zhishu); one_time=0; else if(p->zhishu=0) /*如果指數(shù)為0的話,直接輸出系數(shù)*/ if(p->xishu>0) printf("+%5.2f",p->xishu); /*如果系數(shù)是正的話前面就要加+號(hào)*/ else if(p->xishu=1) /*如果系數(shù)是1的話就直接輸出+x號(hào)*/ printf("+X%d",p->zhishu); else if(p->xishu=-1) /*如果系數(shù)是-1的話就直
11、接輸出-x號(hào)*/ printf("X%d",p->zhishu); else if(p->xishu>0) /*如果系數(shù)是大于0的話就輸出+系數(shù)x指數(shù)的形式*/ printf("+%5.2fX%d",p->xishu,p->zhishu); else if(p->xishu<0) /*如果系數(shù)是小于0的話就輸出系數(shù)x指數(shù)的形式*/ printf("%5.2fX%d",p->xishu,p->zhishu); p=p->next; /*指向下一個(gè)指針*/ printf(&quo
12、t;n"); (2) 加法函數(shù)/*兩個(gè)多項(xiàng)式的加法運(yùn)算*/ pnode * add(pnode *heada,pnode *headb) pnode *headc,*p,*q,*s,*r; /*headc為頭指針,r,s為臨時(shí)指針,p指向第1個(gè)多項(xiàng)式并向右移動(dòng),q指向第2個(gè)多項(xiàng)式并向右移動(dòng)*/ float x; /*x為系數(shù)的求和*/ p=heada; /*指向第一個(gè)多項(xiàng)式的頭*/ q=headb; /*指向第二個(gè)多項(xiàng)式的頭*/ headc=(pnode *)malloc(sizeof(pnode); /*開(kāi)辟空間*/ r=headc; while(p!=NULL&&
13、q!=NULL) /*2個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí)*/ if(p->zhishu=q->zhishu) /*指數(shù)相等的話*/ x=p->xishu+q->xishu; /*系數(shù)就應(yīng)該相加*/ if(x!=0) /*相加的和不為0的話*/ s=(pnode *)malloc(sizeof(pnode); /*用頭插法建立一個(gè)新的節(jié)點(diǎn)*/ s->xishu=x; s->zhishu=p->zhishu; r->next=s; r=s; q=q->next;p=p->next; /*2個(gè)多項(xiàng)式都向右移*/ else if(p->zhi
14、shu<q->zhishu) /*p的系數(shù)小于q的系數(shù)的話,就應(yīng)該復(fù)制q節(jié)點(diǎn)到多項(xiàng)式中*/ s=(pnode *)malloc(sizeof(pnode); s->xishu=q->xishu; s->zhishu=q->zhishu; r->next=s; r=s; q=q->next; /*q向右移動(dòng)*/ else/*p的系數(shù)大于q的系數(shù)的話,就應(yīng)該復(fù)制p節(jié)點(diǎn)到多項(xiàng)式中*/ s=(pnode *)malloc(sizeof(pnode); s->xishu=p->xishu; s->zhishu=p->zhishu;
15、r->next=s; r=s; p=p->next; /*p向右移動(dòng)*/ /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第一個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ while(p!=NULL) s=(pnode *)malloc(sizeof(pnode); s->xishu=p->xishu; s->zhishu=p->zhishu; r->next=s; r=s; p=p->next; /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第2個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ while(q!=NULL) s=(pnode *)malloc(sizeof(pnode);
16、s->xishu=q->xishu; s->zhishu=q->zhishu; r->next=s; r=s; q=q->next; r->next=NULL; /*最后指向空*/ headc=headc->next; /*第一個(gè)頭沒(méi)有用到*/ return headc; /*返回頭接點(diǎn)*/ (3) 減法函數(shù)/*兩個(gè)多項(xiàng)式的加法運(yùn)算*/ pnode * add(pnode *heada,pnode *headb) pnode *headc,*p,*q,*s,*r; /*headc為頭指針,r,s為臨時(shí)指針,p指向第1個(gè)多項(xiàng)式并向右移動(dòng),q指向第2
17、個(gè)多項(xiàng)式并向右移動(dòng)*/ float x; /*x為系數(shù)的求和*/ p=heada; /*指向第一個(gè)多項(xiàng)式的頭*/ q=headb; /*指向第二個(gè)多項(xiàng)式的頭*/ headc=(pnode *)malloc(sizeof(pnode); /*開(kāi)辟空間*/ r=headc; while(p!=NULL&&q!=NULL) /*2個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí)*/ if(p->zhishu=q->zhishu) /*指數(shù)相等的話*/ x=p->xishu+q->xishu; /*系數(shù)就應(yīng)該相加*/ if(x!=0) /*相加的和不為0的話*/ s=(pnode *
18、)malloc(sizeof(pnode); /*用頭插法建立一個(gè)新的節(jié)點(diǎn)*/ s->xishu=x; s->zhishu=p->zhishu; r->next=s; r=s; q=q->next;p=p->next; /*2個(gè)多項(xiàng)式都向右移*/ else if(p->zhishu<q->zhishu) /*p的系數(shù)小于q的系數(shù)的話,就應(yīng)該復(fù)制q節(jié)點(diǎn)到多項(xiàng)式中*/ s=(pnode *)malloc(sizeof(pnode); s->xishu=q->xishu; s->zhishu=q->zhishu; r-&g
19、t;next=s; r=s; q=q->next; /*q向右移動(dòng)*/ else/*p的系數(shù)大于q的系數(shù)的話,就應(yīng)該復(fù)制p節(jié)點(diǎn)到多項(xiàng)式中*/ s=(pnode *)malloc(sizeof(pnode); s->xishu=p->xishu; s->zhishu=p->zhishu; r->next=s; r=s; p=p->next; /*p向右移動(dòng)*/ /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第一個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ while(p!=NULL) s=(pnode *)malloc(sizeof(pnode); s->xishu=
20、p->xishu; s->zhishu=p->zhishu; r->next=s; r=s; p=p->next; /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第2個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ while(q!=NULL) s=(pnode *)malloc(sizeof(pnode); s->xishu=q->xishu; s->zhishu=q->zhishu; r->next=s; r=s; q=q->next; r->next=NULL; /*最后指向空*/ headc=headc->next; /*第一個(gè)頭沒(méi)
21、有用到*/ return headc; /*返回頭接點(diǎn)*/ 2、 程序代碼/*一元多項(xiàng)式計(jì)算*/*程序功能:能夠按照指數(shù)降序排列建立并輸出多項(xiàng)式;能夠完成兩個(gè)多項(xiàng)式的相加、相減,并將結(jié)果輸出;*/*提示:輸入完一元多項(xiàng)式之后,輸入“0 0”結(jié)束本一元多項(xiàng)式的輸入*/*注意:系數(shù)只精確到百分位,最大系數(shù)只能為999.99,指數(shù)為整數(shù).如果需要輸入更大的系數(shù),可以對(duì)程序中5.2%f進(jìn)行相應(yīng)的修改*/#include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<conio.h> /*建
22、立結(jié)構(gòu)體*/ typedef struct pnode float xishu; /*系數(shù) */ int zhishu; /*指數(shù) */ struct pnode *next; /*下一個(gè)指針*/ pnode; /*用頭插法生成一個(gè)多項(xiàng)式,系數(shù)和指數(shù)輸入0時(shí)退出輸入*/ pnode * creat() int m; float n; pnode *head,*rear,*s; /*head為頭指針,rear和s為臨時(shí)指針*/ head=(pnode *)malloc(sizeof(pnode); rear=head; /*指向頭*/ scanf("%f",&n);
23、/*系數(shù)*/scanf("%d",&m); /*輸入指數(shù)*/while(n!=0) /*輸入0退出*/ s=(pnode *)malloc(sizeof(pnode); s->xishu=n; s->zhishu=m; s->next=NULL; rear->next=s; /*頭插法*/ rear=s; scanf("%f",&n); /*輸入系數(shù)*/ scanf("%d",&m); /*輸入指數(shù)*/ head=head->next; /*第一個(gè)頭沒(méi)有用到*/ return he
24、ad; /*調(diào)整多項(xiàng)式*/ void tiaozhen(pnode *head) pnode *p,*q,*t; float temp; p=head; while(p!=NULL) q=p; t=q->next; while(t!=NULL) if(t->zhishu>q->zhishu) q=t; t=t->next; temp=p->xishu;p->xishu=q->xishu;q->xishu=temp; temp=p->zhishu;p->zhishu=q->zhishu;q->zhishu=temp;
25、p=p->next; /*顯示一個(gè)多項(xiàng)式*/ void shuchu(pnode *head) pnode *p; int one_time=1; p=head; while(p!=NULL) /*如果不為空*/ if(one_time=1) if(p->zhishu=0) /*如果指數(shù)為0的話,直接輸出系數(shù)*/ printf("%5.2f",p->xishu); /*如果系數(shù)是正的話前面就要加+號(hào)*/ else if(p->xishu=1|p->xishu=-1) printf("X%d",p->zhishu); /
26、*如果系數(shù)是1的話就直接輸出+x*/ /*如果系數(shù)是-1的話就直接輸出-x號(hào)*/ else if(p->xishu>0) /*如果系數(shù)是大于0的話就輸出+系數(shù)x指數(shù)的形式*/ printf("%5.2fX%d",p->xishu,p->zhishu); else if(p->xishu<0) /*如果系數(shù)是小于0的話就輸出系數(shù)x指數(shù)的形式*/ printf("%5.2fX%d",p->xishu,p->zhishu); one_time=0; else if(p->zhishu=0) /*如果指數(shù)為0
27、的話,直接輸出系數(shù)*/ if(p->xishu>0) printf("+%5.2f",p->xishu); /*如果系數(shù)是正的話前面就要加+號(hào)*/ else if(p->xishu=1) /*如果系數(shù)是1的話就直接輸出+x號(hào)*/ printf("+X%d",p->zhishu); else if(p->xishu=-1) /*如果系數(shù)是-1的話就直接輸出-x號(hào)*/ printf("X%d",p->zhishu); else if(p->xishu>0) /*如果系數(shù)是大于0的話就輸
28、出+系數(shù)x指數(shù)的形式*/ printf("+%5.2fX%d",p->xishu,p->zhishu); else if(p->xishu<0) /*如果系數(shù)是小于0的話就輸出系數(shù)x指數(shù)的形式*/ printf("%5.2fX%d",p->xishu,p->zhishu); p=p->next; /*指向下一個(gè)指針*/ printf("n"); /*兩個(gè)多項(xiàng)式的加法運(yùn)算*/ pnode * add(pnode *heada,pnode *headb) pnode *headc,*p,*q,*s
29、,*r; /*headc為頭指針,r,s為臨時(shí)指針,p指向第1個(gè)多項(xiàng)式并向右移動(dòng),q指向第2個(gè)多項(xiàng)式并向右移動(dòng)*/ float x; /*x為系數(shù)的求和*/ p=heada; /*指向第一個(gè)多項(xiàng)式的頭*/ q=headb; /*指向第二個(gè)多項(xiàng)式的頭*/ headc=(pnode *)malloc(sizeof(pnode); /*開(kāi)辟空間*/ r=headc; while(p!=NULL&&q!=NULL) /*2個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí)*/ if(p->zhishu=q->zhishu) /*指數(shù)相等的話*/ x=p->xishu+q->xishu;
30、 /*系數(shù)就應(yīng)該相加*/ if(x!=0) /*相加的和不為0的話*/ s=(pnode *)malloc(sizeof(pnode); /*用頭插法建立一個(gè)新的節(jié)點(diǎn)*/ s->xishu=x; s->zhishu=p->zhishu; r->next=s; r=s; q=q->next;p=p->next; /*2個(gè)多項(xiàng)式都向右移*/ else if(p->zhishu<q->zhishu) /*p的系數(shù)小于q的系數(shù)的話,就應(yīng)該復(fù)制q節(jié)點(diǎn)到多項(xiàng)式中*/ s=(pnode *)malloc(sizeof(pnode); s->xish
31、u=q->xishu; s->zhishu=q->zhishu; r->next=s; r=s; q=q->next; /*q向右移動(dòng)*/ else/*p的系數(shù)大于q的系數(shù)的話,就應(yīng)該復(fù)制p節(jié)點(diǎn)到多項(xiàng)式中*/ s=(pnode *)malloc(sizeof(pnode); s->xishu=p->xishu; s->zhishu=p->zhishu; r->next=s; r=s; p=p->next; /*p向右移動(dòng)*/ /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第一個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ while(p!=NULL)
32、 s=(pnode *)malloc(sizeof(pnode); s->xishu=p->xishu; s->zhishu=p->zhishu; r->next=s; r=s; p=p->next; /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第2個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ while(q!=NULL) s=(pnode *)malloc(sizeof(pnode); s->xishu=q->xishu; s->zhishu=q->zhishu; r->next=s; r=s; q=q->next; r->next
33、=NULL; /*最后指向空*/ headc=headc->next; /*第一個(gè)頭沒(méi)有用到*/ return headc; /*返回頭接點(diǎn)*/ /*兩個(gè)多項(xiàng)式的減法運(yùn)算*/ pnode * sub(pnode *heada,pnode *headb) pnode *headc,*p,*q,*s,*r; float x; /*x為系數(shù)相減*/ p=heada; /*指向第一個(gè)多項(xiàng)式的頭*/ q=headb; /*指向第二個(gè)多項(xiàng)式的頭*/ headc=(pnode *)malloc(sizeof(pnode); /*開(kāi)辟空間*/ r=headc; while(p!=NULL&&am
34、p;q!=NULL) /*兩個(gè)多項(xiàng)式的某一項(xiàng)都不為空時(shí)*/ if(p->zhishu=q->zhishu) /*指數(shù)相等的話*/ x=p->xishu-q->xishu; /*系數(shù)相減*/ if(x!=0) /*相減的差不為0的話*/ s=(pnode *)malloc(sizeof(pnode); /*用頭插法建立一個(gè)新的節(jié)點(diǎn)*/ s->xishu=x; s->zhishu=p->zhishu; r->next=s; r=s; q=q->next;p=p->next; /*2個(gè)多項(xiàng)式都向右移*/ else if(p->zhis
35、hu<q->zhishu) /*p的系數(shù)小于q的系數(shù)的話*/ s=(pnode *)malloc(sizeof(pnode); s->xishu=-q->xishu; /*建立的節(jié)點(diǎn)的系數(shù)為原來(lái)的相反數(shù)*/ s->zhishu=q->zhishu; r->next=s; r=s; q=q->next; else s=(pnode *)malloc(sizeof(pnode); s->xishu=p->xishu; s->zhishu=p->zhishu; r->next=s; r=s; p=p->next; /
36、*p向右移動(dòng)*/ while(p!=NULL) /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第一個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ s=(pnode *)malloc(sizeof(pnode); s->xishu=p->xishu; s->zhishu=p->zhishu; r->next=s; r=s; p=p->next; while(q!=NULL) /*當(dāng)?shù)?個(gè)多項(xiàng)式空,第1個(gè)數(shù)不為空時(shí),將第2個(gè)數(shù)剩下的全用新節(jié)點(diǎn)產(chǎn)生*/ s=(pnode *)malloc(sizeof(pnode); s->xishu=-q->xishu; /*建立的節(jié)點(diǎn)的
37、系數(shù)為原來(lái)的相反數(shù)*/ s->zhishu=q->zhishu; r->next=s; r=s; q=q->next; r->next=NULL; /*最后指向空*/ headc=headc->next; /*第一個(gè)頭沒(méi)有用到*/ return headc; /*返回頭接點(diǎn)*/ void add_main() pnode * a,*b,*c; printf("n輸入第一個(gè)一元多項(xiàng)式:n系數(shù) 指數(shù)n"); a=creat(); tiaozhen(a); printf("n輸入第二個(gè)一元多項(xiàng)式:n系數(shù) 指數(shù)n"); b=creat(); tiaozhen(b); c=add(a,b); printf("第一個(gè)一元多項(xiàng)式如下:");shuchu(a); printf("第二個(gè)一元多項(xiàng)式如下:");shuchu(b); printf("兩式相加如下:");shuchu(c); void sub_main() pnode * a,*b,*c; p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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年溫室大棚內(nèi)植物種植技術(shù)服務(wù)合同3篇
- 2025年云南貨運(yùn)從業(yè)資格證考試題答案大全及解析
- 2025年荊門大車貨運(yùn)資格證考試題
- 2024全新車輛頂賬拆分及追償服務(wù)協(xié)議5篇
- 2025年河池怎么考貨運(yùn)從業(yè)資格證
- 2024年煤礦開(kāi)發(fā)深度合作協(xié)議模版版B版
- 《男員工站立時(shí),怎》課件
- 安徽省淮北市五校聯(lián)考2022-2023學(xué)年八年級(jí)下學(xué)期第一次月考?xì)v史試題(解析版)
- 2024年物業(yè)服務(wù)管理合同(智能化系統(tǒng))
- 2024年水果訂購(gòu)合同:柑橘專篇
- 開(kāi)關(guān)電源規(guī)格書(shū)
- 工程項(xiàng)目管理流程圖
- 表箱技術(shù)規(guī)范
- 基礎(chǔ)工業(yè)工程習(xí)題答案作者易樹(shù)平
- 二氧化碳充裝操作規(guī)程完整
- 【全冊(cè)】最新部編人教版三年級(jí)道德與法治上冊(cè)知識(shí)點(diǎn)總結(jié)
- 植草溝施工方案
- 苯-甲苯浮閥塔精餾課程設(shè)計(jì).doc
- 環(huán)保-TVOC監(jiān)測(cè)標(biāo)準(zhǔn)方案
- 專題04 《魚(yú)我所欲也》三年中考真題(解析版)-備戰(zhàn)2022年中考語(yǔ)文課內(nèi)文言文知識(shí)點(diǎn)梳理+三年真題訓(xùn)練(部編版)
- 港股通知識(shí)測(cè)試2016
評(píng)論
0/150
提交評(píng)論