版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《數(shù)據(jù)結構課程設計》報告</p><p> 一元稀疏多項式計算器</p><p><b> [問題描述]</b></p><p> 設計簡單的一個一元稀疏多項式計算器。</p><p><b> [基本要求]</b></p><p> 一元稀疏
2、多項式簡單計算器的基本功能是:</p><p> 輸入并建立多項式,以帶頭結點的單鏈表存儲;</p><p> 輸出多項式,輸出形式為整數(shù)序列:n,c1,e1, c2,e2,,,,,,, cn,en,其中n是多項式的項數(shù),ci,ei,分別是第i項的系數(shù)和指數(shù),序列按指數(shù)降序排序;</p><p> 多項式a和b相加,建立多項式a+b;</p>&
3、lt;p> 多項式a和b相減,建立多項式a-b;</p><p> 多項式a和b相乘,建立多項式a*b;</p><p><b> [數(shù)據(jù)結構設計]</b></p><p> 在模擬多項式時,為了簡化處理,只取最核心的兩個數(shù)據(jù):多項式的系數(shù)和指數(shù),具體數(shù)據(jù)結構定義如下:</p><p> typedef
4、struct node{</p><p> int xs; /*系數(shù)*/</p><p> int zs;/*指數(shù)*/</p><p> struct node * next; /*next指針*/</p><p> }Dnode,* Dnodelist;</p>
5、;<p><b> [功能函數(shù)設計]</b></p><p> ?。?)鏈表初始化函數(shù)Creat_node()</p><p> ?。?)多項式數(shù)據(jù)的輸入函數(shù)input()</p><p> (3)數(shù)據(jù)的插入函數(shù)Insert_node()</p><p> ?。?)多項式的顯示函數(shù)output()&l
6、t;/p><p> (6)多項式的運算函數(shù):新建鏈表存儲計算后的多項式</p><p> 多項式相乘Mulresult()</p><p> 多項式相加Addresult()</p><p> 多項式相減Subresult()</p><p> ?。?)主函數(shù)main()</p><p>
7、 創(chuàng)建兩個多項式的鏈表并且初始化,分別調用相應的多項式創(chuàng)建函數(shù),創(chuàng)建成功后選擇運算方式,再將運算結果輸出顯示。</p><p><b> 【實現(xiàn)過程】</b></p><p> 1、在D:根目錄下建立文件夾,命名方式為“班級”+“順序號(兩位)+“姓名”,例如你是商務1419班的,你在學生花名冊上的順序號是05號,你的姓名是張有才,則文件夾的名</p>
8、<p> 字是“商務141905張有才”。這個文件夾就是你的工作文件夾。</p><p> 在VC中創(chuàng)建c++源程序,命名為“poly.c”,保存在工作文件夾中;</p><p> 3、在poly.c中輸入以下內容并編譯,使沒有語法錯誤:</p><p> #include<stdio.h></p><p>
9、 #include<stdlib.h></p><p> typedef struct node{</p><p><b> int xs;</b></p><p><b> int zs;</b></p><p> struct node * next;</p>
10、<p> }Dnode,* Dnodelist; /*定義結構體*/</p><p> Dnodelist Creat_node(void) /*鏈表初始化*/</p><p><b> {</b></p><p> Dnodelist
11、D;</p><p> D=(Dnodelist)malloc(sizeof(Dnode));</p><p><b> if(D)</b></p><p> D->next=NULL;</p><p><b> return D;</b></p><p>&l
12、t;b> }</b></p><p> 4、回答問題,以上程序中,Creat_node(void)函數(shù)的功能是什么?</p><p> 答:創(chuàng)建鏈表里面的一個節(jié)點。</p><p> 5、在poly.c中完成如下函數(shù),并編譯。</p><p> int Insert_node(Dnodelist D,int xs,
13、int zs) /*插入函數(shù)*/</p><p><b> {</b></p><p> Dnodelist p;</p><p> Dnodelist q;</p><p> Dnodelist r;</p><p><b> p=D;</b>&
14、lt;/p><p> while(p->next) </p><p><b> {</b></p><p><b> r=p;</b></p><p> p=p->next;</p><p> if(zs=
15、=p->zs) </p><p><b> {</b></p><p> p->xs=p->xs+xs;</p><p><b> return 1;</b></p><p><b> }</b></p>&
16、lt;p> else if(zs>p->zs) {</p><p> q=Creat_node();</p><p><b> q->xs=xs;</b></p><p><b> q->zs=zs;</b></p><p> r->next=q;&
17、lt;/p><p> q->next=p;</p><p><b> return 1;</b></p><p><b> }</b></p><p> }/*while(p->next)*/</p><p> q=Creat_node();
18、 </p><p><b> q->xs=xs;</b></p><p><b> q->zs=zs;</b></p><p> q->next=p->next;</p><p> p->next=q;</p><p><
19、;b> return 1;</b></p><p><b> free(p);</b></p><p><b> free(q);</b></p><p><b> free(r);</b></p><p><b> }</b>
20、</p><p> 函數(shù)功能:將一項合并到多項式中。</p><p><b> 參數(shù)說明:</b></p><p> D:一個帶頭結點的單鏈表的頭指針,其中按指數(shù)降序存放一個一元多項式的數(shù)據(jù);</p><p> xs:要合并的項的系數(shù);</p><p> zs:要合并的項的指數(shù)。<
21、/p><p> 6、在poly.c中完成如下函數(shù),并編譯。</p><p> void output(Dnodelist D){</p><p> Dnodelist r;</p><p> r=D->next;</p><p> printf("%dx^%d",r->xs,r-&
22、gt;zs);</p><p> r=r->next;</p><p> while(r!=NULL)</p><p><b> {</b></p><p> if(r->xs>0)</p><p> printf("+%dx^%d",r->x
23、s,r->zs);</p><p><b> else</b></p><p> printf("%dx^%d",r->xs,r->zs);</p><p> r=r->next;</p><p><b> }</b></p><
24、;p> printf("\n"); }</p><p> 函數(shù)功能:以類似“-3*x^100+2*x^10-10”的形式輸出D中存放的多項式數(shù)據(jù)。</p><p> 7、在poly.c中輸入以下函數(shù),并編譯。</p><p> Dnodelist input(void){</p><p> Dnodelis
25、t D;</p><p> int xs, zs;</p><p> D = Creat_node();</p><p> printf("請輸入系數(shù)和指數(shù)(系數(shù),指數(shù)):");</p><p> scanf("%d,%d", &xs, &zs);</p><
26、p> while(xs!=0 && zs!=0){</p><p> Insert_node(D, xs, zs);</p><p> printf("請輸入系數(shù)和指數(shù)(系數(shù),指數(shù)):");</p><p> scanf("%d,%d", &xs, &zs);</p>
27、<p><b> }</b></p><p><b> return D;</b></p><p><b> }</b></p><p> 你認為以上函數(shù)的功能是什么?</p><p> 答:從鍵盤輸入系數(shù)和指數(shù)存放在鏈表中。</p><
28、;p> 8、在poly.c中輸入以下main()函數(shù),并編譯。</p><p> void main(void){</p><p> Dnodelist D;</p><p> D = input();</p><p> output(D);</p><p><b> }</b>
29、</p><p> 9、運行你的程序,輸入以下數(shù)據(jù):</p><p><b> -3,100</b></p><p><b> 2,10</b></p><p><b> -10,1</b></p><p><b> 0,0</
30、b></p><p> 將你的程序的運行結果的界面粘貼在下面:</p><p> 10、在poly.c中完成以下函數(shù),其功能是計算D1和D2中兩個多項式的和,函數(shù)返回和多項式。</p><p> Dnodelist Addresult(Dnodelist D1,Dnodelist D2) </p><p><b>
31、 {</b></p><p> Dnodelist D;</p><p> Dnodelist p,q;</p><p><b> int x,z;</b></p><p> D=Creat_node();</p><p> p=D1->next;</p>
32、<p> q=D2->next;</p><p><b> while(q)</b></p><p><b> {</b></p><p><b> x=q->xs;</b></p><p><b> z=q->zs;<
33、/b></p><p> Insert_node(D,x,z);</p><p> q=q->next;</p><p><b> }</b></p><p><b> while(p)</b></p><p><b> {</b>
34、</p><p><b> x=p->xs;</b></p><p><b> z=p->zs;</b></p><p> Insert_node(D,x,z);</p><p> p=p->next; </p><p><b&
35、gt; }</b></p><p><b> return D;</b></p><p><b> }</b></p><p> 11、在poly.c中完成以下兩個函數(shù),其功能分別是是計算兩個多項式的差和乘積。</p><p> Dnodelist Subresult(Dnod
36、elist D1, Dnodelist D2){</p><p> Dnodelist D;</p><p> Dnodelist p,q;</p><p><b> int x,z;</b></p><p> D=Creat_node();</p><p> p=D1->next
37、;</p><p> q=D2->next;</p><p> while(p&&q)</p><p><b> {</b></p><p> if((p->zs)<(q->zs))</p><p><b> {</b>
38、</p><p> x=-(q->xs); </p><p><b> z=q->zs;</b></p><p> Insert_node(D,x,z);</p><p> q=q->next;</p><p><b> }</
39、b></p><p> else if((p->zs)>(q->zs))</p><p><b> {</b></p><p><b> x=p->xs;</b></p><p><b> z=p->zs;</b></p>
40、<p> Insert_node(D,x,z);</p><p> p=p->next;</p><p><b> }</b></p><p> else </p><p><b> {</b></p><
41、p><b> z=q->zs;</b></p><p> x=(p->xs)-(q->xs);</p><p> Insert_node(D,x,z);</p><p> p=p->next;</p><p> q=q->next;</p><p>&
42、lt;b> }</b></p><p><b> }</b></p><p><b> while(p)</b></p><p><b> {</b></p><p><b> x=p->xs;</b></p>
43、<p><b> z=p->zs;</b></p><p> Insert_node(D,x,z);</p><p> p=p->next;</p><p><b> }</b></p><p><b> while(q)</b></p
44、><p><b> {</b></p><p> x=-(q->zs);</p><p><b> z=q->zs;</b></p><p> Insert_node(D,x,z);</p><p> q=q->next;</p><
45、;p> } </p><p><b> return D;</b></p><p><b> }</b></p><p> Dnodelist Mulresult(Dnodelist D1, Dnodelist D2){</p>
46、<p> Dnodelist D;</p><p> Dnodelist p,q;</p><p><b> int x,z;</b></p><p> D=Creat_node();</p><p> p=D1->next;</p><p> q=D2->ne
47、xt;</p><p><b> while(q)</b></p><p><b> {</b></p><p><b> while(p)</b></p><p><b> {</b></p><p> x=p->
48、xs*q->xs; /*系數(shù)相乘,指數(shù)相加*/</p><p> z=p->zs+q->zs;</p><p> Insert_node(D,x,z);</p><p> p=p->next;</p><p><b> }</b></p><p&g
49、t; p=D1->next;</p><p> q=q->next;</p><p><b> }</b></p><p><b> return D;</b></p><p><b> }</b></p><p> 編寫main
50、函數(shù),功能輸入兩個多項式的數(shù)據(jù),計算并輸出和、差、積多項式,把程序運行結果的界面粘貼在下面。</p><p><b> [收獲和建議]</b></p><p> 1、通過本次課程設計,你都有哪些收獲,請寫在下面。</p><p> 通過這次課程設計,我感覺到要真正做出一個程序并不很容易,但只要用心去做,總會有收獲,特別是當我遇到問題,查資
51、料,問同學,想盡辦法去解決,最后終于找到方法時,心里的那份喜悅之情真是難以形容.編寫程序中遇到問題再所難免,應耐心探究其中的原因,從出現(xiàn)問題的地方起,并聯(lián)系前后程序,仔細推敲,逐個排查.直到最終搞清為止。</p><p> “享受制作過程 追求更加完美”是我對實訓的總結。</p><p> 你對這門課程教學內容和方法有什么好的建議,請寫在下面。</p><p>
52、 通過這次課程設計我覺得我們學習《數(shù)據(jù)結構》的方法存在一定的弊端,《數(shù)據(jù)結構》的效果直接影響到我們對其它專業(yè)課的學習和今后業(yè)務的成長。我覺得我們對于《數(shù)據(jù)結構》的學習不僅包括理論部分的學習,還要讓我們勤動手,多實踐?!≌麄€實驗過程要結合教學進度與我們的實際情況,制定實驗的內容。實驗分兩部分,一是驗證性的,主要結合課堂理論教學內容展開,學生可以對在課堂上學到的基本算法進行驗證;二是設計性實驗,堅持“學以致用”的原則,目的是讓學生充分利用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《數(shù)據(jù)結構課程設計》報告---一元稀疏多項式計算器
- 數(shù)據(jù)結構課程設計--一元稀疏多項式計算器
- 數(shù)據(jù)結構課程設計---一元稀疏多項式計算器
- 數(shù)據(jù)結構課程設計-一元多項式計算器
- 一元稀疏多項式計算器課程設計
- 一元多項式計算(數(shù)據(jù)結構課程設計)
- 數(shù)據(jù)結構課程設計---一元多項式計算
- 課程設計報告---一元多項式計算器
- 數(shù)據(jù)結構課程設計報告一元多項式的計算
- 數(shù)據(jù)結構課程設計報告一元多項式的計算
- 數(shù)據(jù)結構課程設計報告一元多項式的計算
- 數(shù)據(jù)結構課程設計--- 一元稀疏多項式簡單計數(shù)器
- 數(shù)據(jù)結構課程設計--多項式計算器
- 數(shù)據(jù)結構課程設計-一元稀疏多項式簡單計數(shù)器
- 數(shù)據(jù)結構課程設計---一元多項式
- 數(shù)據(jù)結構課程設計----一元多項式
- 數(shù)據(jù)結構課程設計報告一元多項式的計算[1]
- 一元多項式的計算數(shù)據(jù)結構課程設計報告
- 一元多項式的計算數(shù)據(jù)結構課程設計
- 數(shù)據(jù)結構課程設計報告一元多項式的實現(xiàn)
評論
0/150
提交評論