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

下載本文檔

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

文檔簡(jiǎn)介

1、.課程設(shè)計(jì)報(bào)告1. 需求分析【問(wèn)題描述】設(shè)計(jì)一個(gè)一元稀疏多項(xiàng)式簡(jiǎn)單計(jì)算器.【基本要求】一元稀疏多項(xiàng)式基本功能包括:1) 輸入并建立多項(xiàng)式;2) 輸出多項(xiàng)式,輸出形式為整數(shù)序列:n, c1, e1, c2, e2, , cn, en,其中n是多項(xiàng)式的項(xiàng)數(shù),ci和ei分別是第i項(xiàng)的系數(shù)和指數(shù),序列按指數(shù)降序排列;3) 多項(xiàng)式a和b相加,建立多項(xiàng)式a+b;4) 多項(xiàng)式a和b相減,建立多項(xiàng)式a-b;【測(cè)試數(shù)據(jù)】1) (2x+5x8-3.1x11)+(11x9-5x8+7)=(-3.1x11+11x8+2x+7)2) (-1.2x9+6x-3+4.4x2-x)-(7.8x15+4.4x2-6x-3)=(

2、-7.8x15-1.2x9+12x-3-x)3) (x5+x4+x3+x2+x+1)-(-x4-x3)=(x5+x2+x+1)4) (x3+x)-(-x3-x)=05) (x100+x)+(x200+x100)=(x200+2x100+x)6) (x3+x2+x)+0=x3+x2+x7) 互換上述測(cè)試數(shù)據(jù)中的前后兩個(gè)多項(xiàng)式.2. 概要設(shè)計(jì)ADT Polynomial數(shù)據(jù)對(duì)象: D=ai|aiTermSet, i=1,2,m,m0,TermSet中的每個(gè)元素包含一個(gè)表示系數(shù)的實(shí)數(shù)和表示指數(shù)的整數(shù)數(shù)據(jù)對(duì)象: R1=|ai,ai-1D,且ai-1中的指數(shù)值小于ai中的指數(shù),i=2,m基本操作:Cre

3、atePolyn(void)Result: 指數(shù)由大到小輸入m項(xiàng)的系數(shù)和指數(shù),建立一元多項(xiàng)式pPrintPoly (LNode Head)Result: 輸出一元多項(xiàng)式AddPoly (LNode H1,LNode H2) Condition: 一元多項(xiàng)式pa,pb已存在Result: 完成多項(xiàng)式相加運(yùn)算,即pa=pa+pb,并銷毀一元多項(xiàng)式pb.SubtractPoly (LNode H1,LNode H2)Condition: 一元多項(xiàng)式pa,pb已存在Result: 完成多項(xiàng)式相減運(yùn)算,即pa=pa-pb,并銷毀一元多項(xiàng)式pb.ADT Polynomial3. 詳細(xì)設(shè)計(jì)【數(shù)據(jù)類型定義】t

4、ypedef struct node int expn,coef; struct node *next;Nodetype,*LNode; /定義結(jié)點(diǎn)類型【函數(shù)原型定義】LNode CreatePolyn(void);Void PrintPoly (LNode Head);LNode AddPolyn(LNode H1,LNode H2);LNode SubPolyn(LNode H1,LNode H2);【核心算法描述】CreatePolyn()LNode CreatePolyn(void) /創(chuàng)建表達(dá)式 LNode Head,p,pre,pree; int x,z; Head=(LNode)

5、malloc(sizeof(Nodetype); Head-next=NULL; printf(當(dāng)你輸入的系數(shù)為0時(shí),輸入將結(jié)束!n); printf(請(qǐng)輸入第一項(xiàng)系數(shù):); scanf(%d,&x); if(x=0) p=(LNode)malloc(sizeof(LNode); p-coef=0; p-expn=0; Head-next=p; p-next=NULL; while(x!=0) printf(請(qǐng)輸入指數(shù):); scanf(%d,&z); p=(LNode)malloc(sizeof(Nodetype); p-coef=x; p-expn=z; pre=Head; while(p

6、re-next&pre-next-expn=z)/原有項(xiàng)指數(shù)大于插入項(xiàng) pree=pre; pre=pre-next; p-next=pre-next;/插入項(xiàng) pre-next=p; if(pre-expn=p-expn)/原有項(xiàng)指數(shù)等于插入項(xiàng) pre-coef+=p-coef; pre-next=p-next; free(p); if(pre-coef=0)/系數(shù)為0 pree-next=pre-next; free(pre); printf(請(qǐng)輸入系數(shù):); scanf(%d,&x); if(Head-next=NULL)/多項(xiàng)式空 pre=(LNode)malloc(sizeof(LN

7、ode); pre-coef=0; pre-expn=0; pre-next=Head-next; Head-next=pre; return Head;PrintPolyn()void PrintPolyn(LNode Head) /輸出表達(dá)式 LNode pre; pre=Head-next; if(pre-expn=0)/指數(shù)為0 printf(%d,pre-coef); else printf(%d*X(%d),pre-coef,pre-expn); pre=pre-next; while(pre)/系數(shù)不為0 if(pre-expn=0)/指數(shù)為0 if(pre-coef0) pri

8、ntf(+%d,pre-coef); else if(pre-coefcoef); else/指數(shù)不為0 if(pre-coef0) printf(+%d*X(%d),pre-coef,pre-expn); else if(pre-coefcoef,pre-expn); pre=pre-next;/遍歷每一項(xiàng) printf(n);AddPolyn()LNode AddPolyn(LNode H1,LNode H2) /表達(dá)式相加 LNode H3,p1,p2,p3,pre;/p1第一個(gè)多項(xiàng)式的項(xiàng),pre p的前一項(xiàng) H3=(LNode)malloc(sizeof(LNode); H3-next

9、=NULL; /建立一個(gè)空的多項(xiàng)式 p1=H1-next; /第一個(gè)多項(xiàng)式的第一項(xiàng) p2=H2-next; pre=H3; / while(p1&p2) if(p1-expnp2-expn)/第一個(gè)多項(xiàng)式的項(xiàng)的指數(shù)大于第二個(gè)的 p3=(LNode)malloc(sizeof(LNode); p3-expn=p1-expn; p3-coef=p1-coef; p3-next=pre-next; pre-next=p3; pre=p3; p1=p1-next; else if(p1-expnexpn)/第一個(gè)多項(xiàng)式的項(xiàng)的指數(shù)小于第二個(gè)的 p3=(LNode)malloc(sizeof(LNode)

10、; p3-expn=p2-expn; p3-coef=p2-coef; p3-next=pre-next; pre-next=p3; pre=p3; p2=p2-next; else if(p1-coef+p2-coef!=0)/相加為不0,指數(shù)相同系數(shù)相加 p3=(LNode)malloc(sizeof(LNode); p3-expn=p1-expn; p3-coef=p1-coef+p2-coef; p3-next=pre-next; pre-next=p3; pre=p3; p1=p1-next; p2=p2-next; else/相加為0 p1=p1-next; p2=p2-next;

11、 while(p2) p3=(LNode)malloc(sizeof(LNode); p3-expn=p2-expn; p3-coef=p2-coef; p3-next=pre-next; pre-next=p3; pre=p3; p2=p2-next; while(p1) p3=(LNode)malloc(sizeof(LNode); p3-expn=p1-expn; p3-coef=p1-coef; p3-next=pre-next; pre-next=p3; pre=p3; p1=p1-next; return H3;Substract()LNode SubstractPolyn(LNo

12、de H1,LNode H2) /表達(dá)式相減/讓系數(shù)變負(fù),代入加法 LNode H3,pre; pre=H2-next; while(pre) pre-coef=-pre-coef; pre=pre-next; H3=AddPolyn(H1,H2); pre=H2-next; while(pre) pre-coef=-pre-coef; pre=pre-next; return H3;【函數(shù)調(diào)用關(guān)系】main()調(diào)用CreatePoly(),PrintPoly(),AddPoly(),scanf()函數(shù)輸入,printf()函數(shù)輸出。4. 運(yùn)行記錄5. 總結(jié)首次做課程設(shè)計(jì)的題目,小激動(dòng),小緊張,編程的基礎(chǔ)比較差,所以把第二章學(xué)習(xí)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論