順序結(jié)構(gòu)動態(tài)鏈表結(jié)構(gòu)下的一元多項式的加法減法乘法的實現(xiàn)_第1頁
順序結(jié)構(gòu)動態(tài)鏈表結(jié)構(gòu)下的一元多項式的加法減法乘法的實現(xiàn)_第2頁
順序結(jié)構(gòu)動態(tài)鏈表結(jié)構(gòu)下的一元多項式的加法減法乘法的實現(xiàn)_第3頁
順序結(jié)構(gòu)動態(tài)鏈表結(jié)構(gòu)下的一元多項式的加法減法乘法的實現(xiàn)_第4頁
順序結(jié)構(gòu)動態(tài)鏈表結(jié)構(gòu)下的一元多項式的加法減法乘法的實現(xiàn)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

百度文庫-讓每個人平等地提升自我百度文庫-讓每個人平等地提升自我PAGEPAGE15百度文庫-讓每個人平等地提升自我PAGE課程設(shè)計(數(shù)據(jù)結(jié)構(gòu))班級姓名學(xué)號指導(dǎo)教師二○一○年七課程設(shè)計任務(wù)書及成績評定課題名稱順序結(jié)構(gòu)、動態(tài)鏈表結(jié)構(gòu)下的一元多項式的加法、減法、乘法的實現(xiàn)。Ⅰ、題目的目的和要求1、設(shè)計目的鞏固和加深對數(shù)據(jù)結(jié)構(gòu)的理解,通過上機實驗、調(diào)試程序,加深對課本知識的理解,最終使學(xué)生能夠熟練應(yīng)用數(shù)據(jù)結(jié)構(gòu)的知識寫程序。(1)通過本課程的學(xué)習(xí),能熟練掌握幾種基本數(shù)據(jù)結(jié)構(gòu)的基本操作。(2)能針對給定題目,選擇相應(yīng)的數(shù)據(jù)結(jié)構(gòu),分析并設(shè)計算法,進而給出問題的正確求解過程并編寫代碼實現(xiàn)。2、設(shè)計題目要求(給出你所選擇的題目的要求描述)首先判定多項式是否稀疏分別采用順序和動態(tài)存儲結(jié)構(gòu)實現(xiàn);結(jié)果M(x)中無重復(fù)階項和無零系數(shù)項;要求輸出結(jié)果的升冪和降冪兩種排列情況;Ⅱ、設(shè)計進度及完成情況日期內(nèi)容選取參考書,查閱有關(guān)文獻資料,完成資料搜集和系統(tǒng)分析工作。創(chuàng)建相關(guān)數(shù)據(jù)結(jié)構(gòu),錄入源程序。調(diào)試程序并記錄調(diào)試中的問題,初步完成課程設(shè)計報告。上交課程設(shè)計報告打印版并進行課程設(shè)計答辯,要求每個同學(xué)針對自己的設(shè)計回答指導(dǎo)教師3-4個問題??己私Y(jié)束后將課程設(shè)計報告和源程序的電子版交班長統(tǒng)一刻光盤上交。Ⅲ、主要參考文獻及資料[1]嚴蔚敏.?dāng)?shù)據(jù)結(jié)構(gòu)(C語言版).清華大學(xué)出版社,2007[2]嚴蔚敏.?dāng)?shù)據(jù)結(jié)構(gòu)題集(C語言版).清華大學(xué)出版社,2007[3]譚浩強.C語言程序設(shè)計.清華大學(xué)出版社,2005[4]與所用編程環(huán)境相配套的C語言或C++相關(guān)的資料Ⅳ、成績評定設(shè)計成績:(教師填寫)指導(dǎo)老師:(簽字)二○一○年七月十日目錄TOC\o"1-3"\f\u第一章概述 1第二章系統(tǒng)分析 1第三章概要設(shè)計 2第四章詳細設(shè)計 3第五章運行與測試 11第六章總結(jié)與心得 14參考文獻 15本目錄是根據(jù)正文文檔自動生成的,請在報告完成后,更新目錄的頁碼,更新方法如下:1.鼠標單擊目錄任意部分選中目錄;2.單擊鼠標右鍵選擇“更新域”;3.在出現(xiàn)的“更新目錄”的對話框中選擇“只更新頁碼”,見圖1-3,單擊“確定”按鈕,目錄頁碼將被更新。更新完成后,最好再核對一下。圖1-3更新目錄頁碼示意圖第一章概述課程設(shè)計是實踐性教學(xué)中的一個重要環(huán)節(jié),它以某一課程為基礎(chǔ),可以涉及和課程相關(guān)的各個方面,是一門獨立于課程之外的特殊課程。課程設(shè)計是讓同學(xué)們對所學(xué)的課程更全面的學(xué)習(xí)和應(yīng)用,理解和掌握課程的相關(guān)知識?!稊?shù)據(jù)結(jié)構(gòu)》是一門重要的專業(yè)基礎(chǔ)課,是計算機理論和應(yīng)用的核心基礎(chǔ)課程。數(shù)據(jù)結(jié)構(gòu)課程設(shè)計,要求學(xué)生在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇和應(yīng)用、算法的設(shè)計及其實現(xiàn)等方面,加深對課程基本內(nèi)容的理解。同時,在程序設(shè)計方法以及上機操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)和嚴格的訓(xùn)練。在這次的課程設(shè)計中我選擇的題目是順序結(jié)構(gòu)、動態(tài)鏈表結(jié)構(gòu)下的一元多項式的加法、減法、乘法的實現(xiàn)。分別采用順序結(jié)構(gòu)和鏈式存儲結(jié)構(gòu),利用多項得結(jié)果,最后得多項式中不含有重復(fù)階項和零系數(shù)得項。除此之外,還得分為降冪和升冪兩種排序方式。第二章系統(tǒng)分析順序結(jié)構(gòu)、動態(tài)鏈表結(jié)構(gòu)下的一元多項式的加法、減法、乘法的實現(xiàn)??梢苑譃閹讉€模塊:輸入模塊、輸出模塊(升冪降冪)、數(shù)據(jù)處理模塊(多項式的加減乘)、主程序模塊。在程序過程中加入漢字提示符,讓讀者清楚明白的操作該程序。運行程序時看起來簡潔有序,操作簡單明了。程序執(zhí)行時的命令:①選擇創(chuàng)建兩個一元多項式②輸入第一個一元多項式的項數(shù)③依次輸入一元多項式的系數(shù)和指數(shù)④以相同方式輸入第二個一元多項式⑤選擇操作方式⑥選擇降冪或升冪排序⑦輸出結(jié)果⑧是否退出4.測試數(shù)據(jù)。輸入的一元多項式系數(shù)指數(shù)分別為70,31,98,517和81,227,-98。加法結(jié)果為;升冪降冪減法結(jié)果為:升冪降冪乘法結(jié)果為:升冪降冪第三章概要設(shè)計1、數(shù)據(jù)結(jié)構(gòu)的設(shè)計在該程序中分別分為順序存儲和鏈式存儲結(jié)構(gòu)。2、算法的設(shè)計本程序主要分為四大模塊①主程序模塊②輸入模塊:通過Getpolyn函數(shù)輸入③輸出模塊(升冪降冪):PrintPolyn函數(shù)實現(xiàn)輸出④數(shù)據(jù)處理模塊(多項式的加減乘):通過一元多項式的Polynomial基本操作實現(xiàn)3、抽象數(shù)據(jù)類型的設(shè)計一元多項式抽象數(shù)據(jù)類型的定義:抽象數(shù)據(jù)類型Polynomial的定義:第四章詳細設(shè)計#include<>#include<>typedefstruct{floatcoef;fX^%d",q->,q->;i++;}if(q->==0&&q->!=0)printf("%.2f",q->;fX^%d",q->,q->;i++;}if(q->==0&&q->!=0){if(q->>0)printf("+");printf("%f",q->;}q=q->next;if(q==NULL){printf("\n");break;}}}return1;}/*1、創(chuàng)建并初始化多項式鏈表*/polynomailcreatpolyn(polynomailP,intm){polynomailr,q,p,s,Q;inti;P=(LNode*)malloc(sizeof(LNode));r=P;for(i=0;i<m;i++){s=(LNode*)malloc(sizeof(LNode));printf("請輸入第%d項的系數(shù)和指數(shù):",i+1);scanf("%f%d",&s->,&s->;r->next=s;r=s;}r->next=NULL;if(P->next->next!=NULL){for(q=P->next;q!=NULL/*&&q->next!=NULL*/;q=q->next)//合并同類項for(p=q->next,r=q;p!=NULL;)if(q->==p->{q->=q->+p->;r->next=p->next;Q=p;p=p->next;free(Q);}else{r=r->next;p=p->next;}}returnP;}/*2、兩多項式相加*/polynomailaddpolyn(polynomailpa,polynomailpb){polynomails,newp,q,p,r;intj;p=pa->next;q=pb->next;newp=(LNode*)malloc(sizeof(LNode));r=newp;while(p&&q){s=(LNode*)malloc(sizeof(LNode));switch(cmp(p->data,q->data)){case-1:s->=p->;s->=p->;r->next=s;r=s;p=p->next;break;case0:s->=p->+q->;if(s->!={s->=p->;r->next=s;r=s;}p=p->next;q=q->next;break;case1:s->=q->;s->=q->;r->next=s;r=s;q=q->next;break;}//switch}//whilewhile(p){s=(LNode*)malloc(sizeof(LNode));s->=p->;s->=p->;r->next=s;r=s;p=p->next;}while(q){s=(LNode*)malloc(sizeof(LNode));s->=q->;s->=q->;r->next=s;r=s;q=q->next;}r->next=NULL;for(q=newp->next;q->next!=NULL;q=q->next)//合并同類項for(p=q;p!=NULL&&p->next!=NULL;p=p->next)if(q->==p->next->{q->=q->+p->next->;r=p->next;p->next=p->next->next;free(r);}printf("升序1,降序2\n");printf("選擇:");scanf("%d",&j);if(j==1)arrange1(newp);elsearrange2(newp);returnnewp;}/*3、兩多項式相減*/polynomailsubpolyn(polynomailpa,polynomailpb){polynomails,newp,q,p,r,Q;intj;p=pa->next;q=pb->next;newp=(LNode*)malloc(sizeof(LNode));r=newp;while(p&&q){s=(LNode*)malloc(sizeof(LNode));switch(cmp(p->data,q->data)){case-1:s->=p->;s->=p->;r->next=s;r=s;p=p->next;break;case0:s->=p->>;if(s->!={s->=p->;r->next=s;r=s;}p=p->next;q=q->next;break;case1:s->=-q->;s->=q->;r->next=s;r=s;q=q->next;break;}//switch}//whilewhile(p){s=(LNode*)malloc(sizeof(LNode));s->=p->;s->=p->;r->next=s;r=s;p=p->next;}while(q){s=(LNode*)malloc(sizeof(LNode));s->=-q->;s->=q->;r->next=s;r=s;q=q->next;}r->next=NULL;if(newp->next!=NULL&&newp->next->next!=NULL)//合并同類項{for(q=newp->next;q!=NULL;q=q->next)for(p=q->next,r=q;p!=NULL;)if(q->==p->{q->=q->+p->;r->next=p->next;Q=p;p=p->next;free(Q);}else{r=r->next;p=p->next;}}printf("升序1,降序2\n");printf("選擇:");scanf("%d",&j);if(j==1)arrange1(newp);elsearrange2(newp);returnnewp;}/*4兩多項式相乘*/polynomailmulpolyn(polynomailpa,polynomailpb){polynomails,newp,q,p,r;inti=20,j;newp=(LNode*)malloc(sizeof(LNode));r=newp;for(p=pa->next;p!=NULL;p=p->next)for(q=pb->next;q!=NULL;q=q->next){s=(LNode*)malloc(sizeof(LNode));s->=p->*q->;s->=p->+q->;r->next=s;r=s;}r->next=NULL;printf("升序1,降序2\n");printf("選擇:");scanf("%d",&j);if(j==1)arrange1(newp);elsearrange2(newp);for(;i!=0;i--){for(q=newp->next;q->next!=NULL;q=q->next)//合并同類項for(p=q;p!=NULL&&p->next!=NULL;p=p->next)if(q->==p->next->{q->=q->+p->next->;r=p->next;p->next=p->next->next;free(r);}}returnnewp;}/*5、銷毀已建立的兩個多項式*/voiddelpolyn(polynomailpa,polynomailpb){polynomailp,q;p=pa;while(p!=NULL){q=p;p=p->next;free(q);}p=pb;while(p!=NULL){q=p;p=p->next;free(q);}printf("兩個多項式已經(jīng)銷毀\n");}voidmain(){polynomailpa=NULL,pb=NULL;polynomailp,q;polynomailaddp=NULL,subp=NULL,mulp=NULL;intn,m;intsign='y';printf("1、創(chuàng)建兩個一元多項式\n");printf("2、兩多項式相加得一新多項式\n");printf("3、兩多項式相減得一新多項式\n");printf("4、兩多項式相乘得一新多項式\n");printf("5、銷毀已建立的兩個多項式\n");printf("6、退出\n");printf("\n");while(sign!='n'){printf("請選擇:");scanf("%d",&n);switch(n){case1:if(pa!=NULL){printf("已建立兩個一元多項式,請選擇其他操作!");break;}printf("請輸入第一個多項式:\n");printf("要輸入幾項:");scanf("%d",&m);while(m==0){printf("m不能為0,請重新輸入m:");scanf("%d",&m);}pa=creatpolyn(pa,m);printpolyn(pa);printf("請輸入第二個多項式:\n");printf("要輸入幾項:");scanf("%d",&m);pb=creatpolyn(pb,m);printpolyn(pb);break;case2:if(pa==NULL){printf("請先創(chuàng)建兩個一元多項式!\n");break;}addp=addpolyn(pa,pb);printpolyn(addp);break;case3:if(pa==NULL){printf("請先創(chuàng)建兩個一元多項式!\n");break;}subp=subpolyn(pa,pb);printpolyn(subp);break;case4:if(pa==NULL){printf("請先創(chuàng)建兩個一元多項式!\n");break;}mulp=mulpolyn(pa,pb);printpolyn(mulp);break;case5:

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論