版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 題目介紹.............................................................................4</p><p> 1、題目.......................................................
2、.........................................4</p><p> 2、任務(wù)................................................................................................4</p><p> 3、要求...........................
3、.....................................................................4</p><p> 二、需求分析..............................................................................4</p><p> 1、應(yīng)用環(huán)境設(shè)定.........
4、........................................................................4</p><p> 2、用戶界面命令行界面.....................................................................4</p><p> 3、輸入方式............
5、.............................................................................5</p><p> 4、輸出方式.........................................................................................5</p><p>
6、5、數(shù)據(jù)存儲方式.................................................................................5</p><p> 6、程序功能.........................................................................................5</p>
7、<p> 概要設(shè)計..............................................................................5</p><p> 1、自定義數(shù)據(jù)類型.............................................................................5</p><
8、;p> 2、數(shù)據(jù)存儲結(jié)構(gòu).................................................................................6</p><p> 3、程序所用各函數(shù)功能.....................................................................6</p><p&
9、gt; 4、程序流程圖.....................................................................................8</p><p> 詳細(xì)設(shè)計..............................................................................9</p><
10、;p> 1、自定義數(shù)據(jù)結(jié)構(gòu).............................................................................9</p><p> 2、主函數(shù)main()............................................................................9 </p>
11、<p> 3、子函數(shù)一.......................................................................................11</p><p> 4、子函數(shù)二....................................................................................
12、...12</p><p> 5、子函數(shù)三.......................................................................................13</p><p> 6、case1.h.................................................................
13、........................14</p><p> 7、case2.h.........................................................................................15</p><p> 8、case3.h.......................................
14、..................................................16</p><p> 9、case4.h.........................................................................................17</p><p> 五、調(diào)試結(jié)果...............
15、..............................................................17</p><p> 進(jìn)入菜單界面...........................................................................................17</p><p> 選擇1,構(gòu)建只含根結(jié)點
16、的帶權(quán)二叉樹................................................18</p><p> 選擇2,輸出對應(yīng)二叉樹的赫夫曼樹....................................................18</p><p> 選擇3,測試赫夫曼樹在電報通信中的運用.............................
17、...........19</p><p> 選擇4,退出菜單界面............................................................................19</p><p> 六、心得總結(jié)..................................................................
18、...........20</p><p> 七、參考資料.............................................................................21</p><p><b> 題目介紹</b></p><p><b> 1、 題目:</b><
19、/p><p><b> 赫夫曼樹的建立</b></p><p><b> 2、 任務(wù):</b></p><p> 按給定的數(shù)據(jù)建立赫夫曼樹</p><p><b> 3、 要求:</b></p><p> ?。?)可以建立函數(shù)輸入二叉樹;</p
20、><p> (2)輸出其赫夫曼樹。</p><p> ?。?)在上交資料中請寫明:存儲結(jié)構(gòu)、基本算法(可以使用程序流程圖)、輸入輸出、源程序、測試數(shù)據(jù)和結(jié)果。提供良好的菜單操作界面</p><p><b> 需求分析</b></p><p><b> 1、應(yīng)用環(huán)境設(shè)定:</b></p>
21、<p> 電報通信的數(shù)碼撥號時,我通常會用到十進(jìn)制、八進(jìn)制、或者十六進(jìn)制數(shù)等。而輸入數(shù)字后,數(shù)據(jù)將以二進(jìn)制數(shù)編碼后進(jìn)行遠(yuǎn)距離通信傳送。電文傳輸過程中,為了提高通訊效率,通常會要求所傳輸?shù)亩M(jìn)制數(shù)碼盡可能的短。如果對每個字符設(shè)計長度不等的編碼,且讓電文中出現(xiàn)次數(shù)較多的字符采用盡可能短的編碼,則傳送電文的總長便可減少。但是同時要求各數(shù)字編碼之間互不為前綴,從而不出現(xiàn)誤碼。設(shè)計一個程序構(gòu)建一個赫夫曼樹輸出最優(yōu)傳輸碼。</
22、p><p> 2、用戶界面命令行界面:</p><p> (1)構(gòu)建只含根結(jié)點的帶權(quán)二叉樹。</p><p> ?。?)輸出第一部對應(yīng)二叉樹的赫夫曼樹。</p><p> ?。?)給定任意進(jìn)制(小于17)的數(shù)字在電報通信中各自出現(xiàn)的頻率,然后分別列出十個數(shù)字各自的最佳編碼(最佳前綴碼)以及打印出傳輸10m個按照給定頻率出現(xiàn)的十進(jìn)制數(shù)字時所需要
23、的二進(jìn)制數(shù)碼的個數(shù)。</p><p><b> 3、輸入方式:</b></p><p> (1)輸入二叉樹的個數(shù)(小于17)以及各個二叉樹的權(quán)值。</p><p> (2)輸入相關(guān)數(shù)據(jù):</p><p> ?、佟错樞蜉斎雗個n個數(shù)字在電報中出現(xiàn)的頻率。</p><p> ?、?、輸入需要傳輸
24、的n進(jìn)制數(shù)字的個數(shù)參數(shù)m(總數(shù)為</p><p><b> 10m 個)。</b></p><p><b> 4、輸出方式:</b></p><p> (1)輸出所創(chuàng)建赫夫曼樹中各結(jié)點的信息:(權(quán)值,父節(jié)點位置,左兒子位置,右兒子位置)。</p><p> ?。?)輸出相關(guān)數(shù)據(jù):</p&
25、gt;<p> ?。?)輸出0到n各個數(shù)字的最佳編碼(最佳前綴碼)。</p><p> ?。?)輸出所創(chuàng)建的赫夫曼樹的樹權(quán)值(WPL)。</p><p> ?。?)輸出所傳輸?shù)亩M(jìn)制數(shù)碼(電文長度)的總長度。</p><p><b> 5、數(shù)據(jù)存儲方式:</b></p><p> 全部在內(nèi)存存放,不使用
26、硬盤上的文件或其他數(shù)據(jù)源,程序執(zhí)行過程中和結(jié)束后不保存數(shù)據(jù)。</p><p><b> 6、程序功能:</b></p><p> ?。?)創(chuàng)建赫夫曼數(shù)。</p><p> (2)實現(xiàn)赫夫曼樹在電報通信中的應(yīng)用。</p><p><b> 三、概要設(shè)計</b></p><p&
27、gt; 1、自定義數(shù)據(jù)類型:</p><p><b> ?、?</b></p><p> typedef struct</p><p><b> {</b></p><p> int weight;/*假設(shè)葉子權(quán)值為整型*/</p><p> int lchild,
28、rchild,parent;/*左孩子,右孩子,父結(jié)點*/</p><p> }Htnode;/*哈夫曼樹結(jié)點類型*/</p><p><b> Htnode</b></p><p><b> ?、?</b></p><p> typedef struct</p><p&g
29、t;<b> {</b></p><p> char *code;/*編碼*/</p><p> int length;/*編碼的長度*/</p><p> }CodeType;/*葉編碼類型 */</p><p><b> CodeType</b></p><p>
30、;<b> 2、數(shù)據(jù)存儲結(jié)構(gòu)</b></p><p><b> ?、?</b></p><p> 用線性表存儲二叉樹各個結(jié)點,通過線性表構(gòu)造赫夫曼樹:</p><p> Htnode huftree[]</p><p><b> ?、?</b></p>&l
31、t;p> 用線性表存儲各葉子的二進(jìn)制編碼:</p><p> CodeType[]</p><p> 3、程序所用各函數(shù)功能:</p><p><b> ?。?)創(chuàng)建赫夫曼樹</b></p><p> void Hufcreating(Htnode huftree[], int n)</p>
32、<p> 輸入用線性表Htnode huftree[]存儲的n個只含根結(jié)點的二叉樹,及其權(quán)值。函數(shù)將各個根結(jié)點的父節(jié)點及孩子都初始化為-1,表示赫夫曼樹創(chuàng)建之前,每個根結(jié)點不存在父節(jié)點和孩子,通過Selection()函數(shù)對各根結(jié)點的調(diào)用,逐步創(chuàng)建各個節(jié)點的父節(jié)點,最后構(gòu)建成為赫夫曼樹,n個二叉樹最終成為了赫夫曼樹的葉子。</p><p><b> 選擇最小兩個結(jié)點</b>&l
33、t;/p><p> void Selection(Htnode huftree[], int n, int *s1, int *s2)</p><p> 對線性表Htnode huftree[]存儲的n個只含根結(jié)點的二叉樹進(jìn)行選擇。選擇兩個權(quán)值最小的根結(jié)點分別作為新產(chǎn)生結(jié)點孩子,新結(jié)點作為兩最小結(jié)點的父結(jié)點,繼續(xù)存儲到線性表Htnode huftree[]的n個根結(jié)點后面。循環(huán)調(diào)用Sele
34、ction()函數(shù)對父結(jié)點為-1的所有結(jié)點再做選擇,逐步構(gòu)建赫夫曼樹。</p><p> 給哈夫曼樹中各個節(jié)點的編碼</p><p> void HuftreeCode(Htnode huftree[], CodeType cd[], int n)</p><p> 對創(chuàng)建好的赫夫曼樹的葉子進(jìn)行編碼。</p><p><b>
35、 函數(shù)功能示意圖</b></p><p><b> 4、程序流程圖</b></p><p><b> 詳細(xì)設(shè)計</b></p><p><b> 1、自定義數(shù)據(jù)結(jié)構(gòu)</b></p><p> /*構(gòu)造數(shù)據(jù)類型: */</p><p>
36、; typedef struct</p><p><b> {</b></p><p> int weight;/*假設(shè)葉子權(quán)值為整型*/</p><p> int lchild,rchild,parent;/*左孩子,右孩子,父結(jié)點*/</p><p> }Htnode;/*哈夫曼樹結(jié)點類型*/</p&
37、gt;<p> typedef struct</p><p><b> {</b></p><p> char *code;/*編碼*/</p><p> int length;/*編碼的長度*/</p><p> }CodeType;/*葉編碼類型 */</p><p>
38、<b> 主函數(shù)main()</b></p><p> #include "windows.h"</p><p> #include "data.h"</p><p> #include "stdio.h"</p><p> #include &quo
39、t;stdlib.h"</p><p> #include "s1s2.h"</p><p> #include "creatingheftree.h"</p><p> #include "leafcoding.h"</p><p> #include "
40、;case1.h"</p><p> #include "case2.h"</p><p> #include "case3.h"</p><p> #include "case4.h"</p><p> #include "math.h"<
41、;/p><p><b> /*主函數(shù):*/</b></p><p> void main()</p><p><b> {</b></p><p><b> char d;</b></p><p><b> int* n;</b&g
42、t;</p><p><b> int m=0;</b></p><p><b> n=&m;</b></p><p> Htnode huftree[34];</p><p> printf(" 《O(∩_∩)O~大家好!歡迎進(jìn)入
43、菜單界面!》\n\n");/*程序開始*/</p><p> loop: printf (" * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");</p><p> printf (" * 1.構(gòu)建只含根結(jié)點的帶權(quán)二叉樹
44、 *\n"); </p><p> printf (" * 2.輸出對應(yīng)二叉樹的赫夫曼樹(必須先創(chuàng)建二叉樹) *\n"); </p><p> printf (" * 3.赫夫曼樹在電報通信中的應(yīng)用
45、 *\n");</p><p> printf (" * 4.退出 *\n"); </p><p> printf (" * * * * * * * * * * * * * * * * * * * * * *
46、 * * * * * * *\n"); </p><p> printf (" 請選擇指令:"); </p><p> fflush(stdin);</p><p> d=getchar();</p><p><b> switch(d)</b
47、></p><p><b> { </b></p><p> case '1': {</p><p> case1(huftree,n);</p><p> printf("\n\n按回車鍵返回菜單欄!");</p><p> fflush(s
48、tdin);</p><p> getchar();</p><p> system("cls");</p><p> goto loop;</p><p><b> }</b></p><p> case '2': {</p><
49、;p> case2(huftree,n);</p><p> printf("\n\n按回車鍵返回菜單欄!");</p><p> fflush(stdin);</p><p> getchar();</p><p> system("cls");</p><p>
50、; goto loop;</p><p><b> }</b></p><p> case '3': {</p><p><b> case3();</b></p><p> printf("\n\n按回車鍵返回菜單欄!");</p>&
51、lt;p> fflush(stdin);</p><p> getchar();</p><p> system("cls");</p><p> goto loop;</p><p><b> }</b></p><p> case '4':
52、 {</p><p><b> case4();</b></p><p> fflush(stdin);</p><p> getchar();</p><p> system("cls");</p><p><b> break;</b>&l
53、t;/p><p><b> }</b></p><p> default : {printf("\n╮(╯_╰)╭SORRY! 輸入值錯誤!請再次輸入!\n");</p><p> goto loop;</p><p><b> }</b></p><
54、p><b> }</b></p><p><b> }</b></p><p> 3、子函數(shù)一:創(chuàng)建赫夫曼樹</p><p> void Hufcreating(Htnode huftree[], int n)</p><p><b> {</b></p&
55、gt;<p> int i,s1,s2,m,sum;</p><p> m = 2 * n - 1;/*計算哈夫曼樹的結(jié)點總數(shù)*/</p><p> for(i = 1; i <= n; i++)/*初始化每片葉子自成一棵樹*/</p><p><b> {</b></p><p> huf
56、tree[i].lchild = -1;</p><p> huftree[i].rchild =-1;</p><p> huftree[i].parent = -1;</p><p> }/*end for*/</p><p> for(i = n + 1; i <= m; i++)/*給剩下的節(jié)點左孩子,右孩子,父結(jié)點初&
57、lt;/p><p><b> 始化-1*/</b></p><p><b> {</b></p><p> huftree[i].weight = -1;</p><p> huftree[i].lchild = -1;</p><p> huftree[i].rchi
58、ld = -1;</p><p> huftree[i].parent = -1;</p><p> }/*end for*/</p><p> for(i=1; i<=n-1; i++)/*生成n-1個非葉子結(jié)點的循環(huán)&&*/</p><p><b> {</b></p>&
59、lt;p> Selection(huftree, n-1+i, &s1, &s2);</p><p> sum = huftree[s1].weight + huftree[s2].weight;/*求和,構(gòu)造父節(jié)點*/</p><p> huftree[n + i].weight = sum;</p><p> huftree[s1]
60、.parent = n+i;</p><p> huftree[s2].parent = n+i;/*最小的兩個節(jié)點的父節(jié)點的數(shù)組的下標(biāo)*/</p><p> huftree[n + i].lchild = s1;/*父節(jié)點的左孩子下標(biāo)*/</p><p> huftree[n + i].rchild = s2;/*父節(jié)點的右孩子下標(biāo)*/</p>
61、<p> }/*end for*/</p><p><b> }</b></p><p> 4、子函數(shù)二:選擇最小兩個節(jié)點</p><p> void Selection(Htnode huftree[], int n, int *s1, int *s2)</p><p><b> {&l
62、t;/b></p><p> int i,min1,min2;/*兩個最小數(shù)*/</p><p> for(i=1;i<n+1;i++)</p><p> if(huftree[i].parent==-1)</p><p><b> {</b></p><p> min1 =
63、huftree[i].weight;</p><p> *s1 = i;break;</p><p><b> }</b></p><p> for(i = 1; i <= n; i++)</p><p><b> {</b></p><p> if(huft
64、ree[i].parent == -1)</p><p><b> {</b></p><p> if(huftree[i].weight < min1)</p><p><b> {</b></p><p> min1 =huftree[i].weight;</p>&
65、lt;p><b> *s1 = i;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> min2 =huftree[i].weight;<
66、/p><p><b> *s2 = i;</b></p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p> for(i = 1; i <= n;
67、 i++)</p><p><b> {</b></p><p> if(huftree[i].parent == -1 && huftree[i].weight < min2 && huftree[i].weight >= min1 && *s1 != i)</p><p>&l
68、t;b> {</b></p><p> min2 = huftree[i].weight;</p><p><b> *s2 = i;</b></p><p><b> } </b></p><p><b> }</b></p>&
69、lt;p><b> }</b></p><p> 5、子函數(shù)三:求哈夫曼樹中各個節(jié)點的編碼</p><p> void HuftreeCode(Htnode huftree[], CodeType cd[], int n)</p><p><b> {</b></p><p> in
70、t i,c,f,k;</p><p> char temp[17];/*暫存葉子編碼字符串,最后需要轉(zhuǎn)置*/</p><p> for(i = 1; i <= n; i++)/*開始求每個葉子結(jié)點的編碼*/ </p><p><b> {</b></p><p><b> c = 0;</
71、b></p><p> for(k = i, f = huftree[i].parent; f != -1; k = f,f = huftree[f].parent)</p><p><b> {</b></p><p> // printf("父節(jié)點%d\n",f);</p><p>
72、 if(huftree[f].lchild == k)/*左分支是0*/</p><p> temp[c++] = '0'; </p><p><b> else</b></p><p> temp[c++] = '1';/*右分支是1*/</p><p> }/*內(nèi)循環(huán)結(jié)束后,第
73、一份葉子編碼結(jié)束*/</p><p> cd[i].code = (char *)malloc(c+1); /*產(chǎn)生存儲編碼的空間*/</p><p> cd[i].code[c--] = '\0';</p><p><b> k = 0;</b></p><p> while(c >= 0
74、)</p><p> cd[i].code[k++] = temp[c--];/*將temp轉(zhuǎn)置到cd中*/</p><p> /*cd[i].leaf = huftree[i].ch;*/</p><p> cd[i].length = k;</p><p> }/*end for*/</p><p><
75、;b> }</b></p><p> 6、case1.h(構(gòu)建只含根結(jié)點的帶權(quán)二叉樹)</p><p> void case1(Htnode huftree[],int *n)</p><p><b> {</b></p><p> system("cls");</p
76、><p> printf(" 《歡迎構(gòu)建二叉樹!O(∩_∩)O~》\n\n");</p><p><b> int i,m;</b></p><p> printf("請輸入只含根結(jié)點的帶權(quán)二叉樹的個數(shù):");</p><p> scanf(&q
77、uot;%d",&m);</p><p><b> *n=m;</b></p><p><b> if(m>17)</b></p><p> printf("\n╮(╯_╰)╭SORRY! 輸入值過大!請再次輸入!\n\n");</p><p>&l
78、t;b> else</b></p><p><b> {</b></p><p> printf("分別輸入每一個二叉樹的權(quán)值:(不含小數(shù))\n");</p><p> for(i=1;i<m+1;i++)</p><p><b> {</b>&
79、lt;/p><p> printf("第%d個二叉樹的權(quán)值:",i);</p><p> scanf("%d",&(huftree[i].weight));</p><p><b> }</b></p><p> Hufcreating(huftree, m);<
80、/p><p> printf("\n\n O(∩_∩)O~GOOD!只含根結(jié)點的帶權(quán)二叉樹構(gòu)建完畢!\n\n");</p><p><b> }</b></p><p><b> }</b></p><p> 7、case2.h(輸出對應(yīng)二叉樹的赫夫曼樹(必
81、須先創(chuàng)建二叉樹))</p><p> void case2(Htnode huftree[],int*n)</p><p><b> {</b></p><p> system("cls");</p><p><b> int i,m;</b></p>&l
82、t;p><b> m=*n;</b></p><p><b> if(m==0)</b></p><p> printf("╮(╯﹏╰)╭Sorry!您必須在選項一中先創(chuàng)建二叉樹。");</p><p><b> else</b></p><p&g
83、t;<b> {</b></p><p> printf(" 《歡迎進(jìn)入創(chuàng)建赫夫曼樹界面!O(∩_∩)O~》\n\n");</p><p> printf("分別輸出個結(jié)點在線性表中的詳細(xì)信息:('-1'表示該位置不存在)\n");</p><p> for(
84、i=1;i<2*m-1;i++)</p><p><b> {</b></p><p> //printf("第%d個結(jié)點: (權(quán)值:%d,父結(jié)點位置:%d",i,huftree[i].weight,huftree[i].parent);</p><p> //printf(",左兒子位置:%d,
85、右兒子位置:%d)\n",huftree[i].lchild,huftree[i].rchild);</p><p> printf("第%d個結(jié)點: (權(quán)值:%d,父結(jié)點位置:%d,左兒子位置:%d,右兒子位置:%d)\n",i,huftree[i].weight,huftree[i].parent,huftree[i].lchild,huftree[i].rchild);<
86、;/p><p><b> }</b></p><p> printf("\n\n O(∩_∩)O~GOOD!赫夫曼樹構(gòu)建完畢!\n");</p><p><b> }</b></p><p><b> }</b></p>
87、<p> printf("\n\n O(∩_∩)O~GOOD!赫夫曼樹構(gòu)建完畢!\n");</p><p><b> }</b></p><p><b> }</b></p><p> 8、case3.h(赫夫曼樹在電報通信中的應(yīng)用)</p>&
88、lt;p> void case3()</p><p><b> {</b></p><p> system("cls");</p><p> Htnode huftree[34];/*赫夫曼樹的數(shù)組*/</p><p> CodeType cd[17];/*葉的編碼數(shù)組*/</p
89、><p> int n,i,wpl=0, sum=0,m;/*節(jié)點權(quán)值的臨時存放及節(jié)點的個數(shù)*/ </p><p><b> int temp;</b></p><p><b> char j;</b></p><p> printf(" 《歡迎您使用赫夫
90、曼樹的通信編碼功能!O(∩_∩)O~》\n\n\n");</p><p> printf("開始執(zhí)行!請按回車!\n");</p><p> fflush(stdin);</p><p> getchar();</p><p><b> while (1)</b></p>
91、<p><b> {</b></p><p> printf("輸入電報撥號中的數(shù)字進(jìn)制數(shù)(大于1小于17): ");/*輸入帶權(quán)節(jié)點的個數(shù)*/</p><p> scanf("%d",&n);</p><p> if(n < 17)</p><p
92、><b> {</b></p><p> printf("按提示順序分別輸入各個數(shù)字在通信中使用的頻率(百分比): \n");/*輸入帶權(quán)值的數(shù)*/</p><p> for(i =0; i < n; i++)</p><p><b> {</b></p><p
93、><b> if(i>9)</b></p><p> 9、case4.h(退出菜單界面)</p><p> void case4()</p><p><b> {</b></p><p> system("cls");</p><p>
94、; printf(" O(∩_∩)O~謝謝您的使用!\n");</p><p><b> }</b></p><p><b> 五、調(diào)試結(jié)果</b></p><p><b> 進(jìn)入菜單界面:</b></p><p&g
95、t; 選擇1,構(gòu)建只含根結(jié)點的帶權(quán)二叉樹:</p><p> 返回菜單后選擇2,輸出對應(yīng)二叉樹的赫夫曼樹:</p><p> 4、返回菜單后選擇3,測試赫夫曼樹在電報通信中的運用:</p><p> 5、返回菜單后選擇4,退出菜單界面:</p><p><b> 六、心得總結(jié)</b></p>&l
96、t;p> 經(jīng)過本次課程設(shè)計的學(xué)習(xí),我對C語言、數(shù)據(jù)結(jié)構(gòu)對程序的編寫有了更深刻的了解,一個完整的,健壯的程序需要有合理的算法和數(shù)據(jù)結(jié)構(gòu)作為基礎(chǔ),算法是程序的靈魂,是程序的主線,是實現(xiàn)問題的方法和基本步驟的描述,而一個好的算法的實現(xiàn)要建立在合理熟練的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)上 </p><p> 編寫代碼前之前要對所要編譯的程序有個整體的了解,需要用什么樣的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),用什么樣的算法去實現(xiàn)。要重視對結(jié)構(gòu)體
97、變量的運用,因為無論是線形結(jié)構(gòu)還是鏈?zhǔn)浇Y(jié)構(gòu)都難免用到結(jié)構(gòu)體變量,結(jié)構(gòu)體中要包含所要描述問題的各個數(shù)據(jù)域和指針域的指向;程序設(shè)計中最重要的也是最容易出錯的地方是指針,因此要熟練掌握指針的使用方法,對整個程序中指針的指向,什么時候為空,有確切的了解,否則很容易出錯,但要是能將指針用好的話程序設(shè)計也就簡單了許多;關(guān)于數(shù)組,在調(diào)用函數(shù)實參時也容易出錯,因為在用數(shù)組做實參時傳遞的是數(shù)組指針,而這一點在本次課程設(shè)計中,當(dāng)我用到文件包含的方式,讓主函
98、數(shù)main()調(diào)用子文件中的子函數(shù)是,數(shù)組做參數(shù)傳遞過程中遇到了許多細(xì)節(jié)問題,對編程的進(jìn)度造成了很大的阻礙。 </p><p> 要想編譯出一個好的程序真不是一件簡單的事情,這次的作業(yè)又花了我大量的時間,但是無論是C語言還是數(shù)據(jù)結(jié)構(gòu),在學(xué)習(xí)過程中收獲最大的還是最后的大作業(yè),通過大作業(yè),對一些實際操作中算法的描述,數(shù)據(jù)結(jié)構(gòu)的使用才有了更深一層的了解,同時也積累了一些在解決實際問題中的經(jīng)驗,處理一般的編譯,
99、連接錯誤的方法,并能夠一步一步的進(jìn)行調(diào)試,編程的過程確實很辛苦,但是有了成果之后又覺得很輕松。所以感覺要是投入進(jìn)去的話編程還不是很難的,只要能夠把基礎(chǔ)的知識學(xué)好,多在操作中練習(xí),多積累些解決實際問題的經(jīng)驗,以后再做這方面的工作就簡單多了。</p><p> 課題設(shè)計使得我對這學(xué)期所學(xué)的專業(yè)課有了更為深刻的認(rèn)識,對于我來說這不僅僅是一次課程設(shè)計,更重要的是使我明白了在學(xué)習(xí)的過程中,所有的問題要一個人去面對,有問題
100、要想盡各種辦法解決,克服困難,在解決這些困難的過程中提高了我學(xué)習(xí)的能力、解決問題的能力和實際工作的能力,學(xué)到了許多書本以外的認(rèn)識。通過這次課程設(shè)計我覺得我學(xué)習(xí)《數(shù)據(jù)結(jié)構(gòu)》的方法存在一定的弊端,《數(shù)據(jù)結(jié)構(gòu)》的效果直接影響到我對其它專業(yè)課的學(xué)習(xí)和今后業(yè)務(wù)的成長。我覺得我對于《數(shù)據(jù)結(jié)構(gòu)》的學(xué)習(xí)不僅包括理論部分的學(xué)習(xí),還要讓我勤動手,多實踐。最后我要衷心的感謝所有給予我?guī)椭椭笇?dǎo)的莫老師,我的同學(xué):雷艷雄、黎盛才、劉宇等人,沒有他們的幫助我的課
101、程設(shè)計也不會完成得這么順利!</p><p> 最后,通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正學(xué)以致用,從而提高自己的實際動手能力和獨立思考的能力。而且,編程非常考驗人的耐心和信心,這也在性格方面給了我很多磨練。通過這次課程設(shè)計之后,我把前面所學(xué)過的知識又重新溫故了一遍,可以說是收獲不少。</p>
102、<p><b> 七、參考資料</b></p><p> 譚浩強 《C程序設(shè)計》 清華大學(xué)出版社</p><p> 譚浩強 《C++程序設(shè)計》 清華大學(xué)出版社</p><p> 嚴(yán)蔚敏、吳偉民 《數(shù)據(jù)結(jié)構(gòu)》
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(赫夫曼樹的建立)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----赫夫曼樹
- 數(shù)據(jù)結(jié)構(gòu)-赫夫曼樹-課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---哈夫曼樹的應(yīng)用
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--哈夫曼樹的應(yīng)用
- 應(yīng)用數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---哈夫曼樹
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--- 哈夫曼樹的應(yīng)用
- 數(shù)據(jù)結(jié)構(gòu)赫夫曼樹2
- 哈夫曼樹_數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 哈夫曼樹_數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---哈夫曼編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----哈夫曼編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計哈夫曼編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--哈夫曼編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---哈夫曼編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計哈夫曼編碼
- 數(shù)據(jù)結(jié)構(gòu) 課程設(shè)計之哈夫曼編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--電文編碼譯碼(哈夫曼編碼)
- 赫夫曼編譯碼器數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計電文編碼譯碼(哈夫曼編碼)
評論
0/150
提交評論