2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩20頁(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、<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ù)存儲(chǔ)方式.................................................................................5</p><p>  6、程序功能.........................................................................................5</p>

7、<p>  概要設(shè)計(jì)..............................................................................5</p><p>  1、自定義數(shù)據(jù)類型.............................................................................5</p><

8、;p>  2、數(shù)據(jù)存儲(chǔ)結(jié)構(gòu).................................................................................6</p><p>  3、程序所用各函數(shù)功能.....................................................................6</p><p&

9、gt;  4、程序流程圖.....................................................................................8</p><p>  詳細(xì)設(shè)計(jì)..............................................................................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é)點(diǎn)

16、的帶權(quán)二叉樹(shù)................................................18</p><p>  選擇2,輸出對(duì)應(yīng)二叉樹(shù)的赫夫曼樹(shù)....................................................18</p><p>  選擇3,測(cè)試赫夫曼樹(shù)在電報(bào)通信中的運(yùn)用.............................

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>  赫夫曼樹(shù)的建立</b></p><p><b>  2、 任務(wù):</b></p><p>  按給定的數(shù)據(jù)建立赫夫曼樹(shù)</p><p><b>  3、 要求:</b></p><p> ?。?)可以建立函數(shù)輸入二叉樹(shù);</p

20、><p> ?。?)輸出其赫夫曼樹(shù)。</p><p>  (3)在上交資料中請(qǐng)寫(xiě)明:存儲(chǔ)結(jié)構(gòu)、基本算法(可以使用程序流程圖)、輸入輸出、源程序、測(cè)試數(shù)據(jù)和結(jié)果。提供良好的菜單操作界面</p><p><b>  需求分析</b></p><p><b>  1、應(yīng)用環(huán)境設(shè)定:</b></p>

21、<p>  電報(bào)通信的數(shù)碼撥號(hào)時(shí),我通常會(huì)用到十進(jìn)制、八進(jìn)制、或者十六進(jìn)制數(shù)等。而輸入數(shù)字后,數(shù)據(jù)將以二進(jìn)制數(shù)編碼后進(jìn)行遠(yuǎn)距離通信傳送。電文傳輸過(guò)程中,為了提高通訊效率,通常會(huì)要求所傳輸?shù)亩M(jìn)制數(shù)碼盡可能的短。如果對(duì)每個(gè)字符設(shè)計(jì)長(zhǎng)度不等的編碼,且讓電文中出現(xiàn)次數(shù)較多的字符采用盡可能短的編碼,則傳送電文的總長(zhǎng)便可減少。但是同時(shí)要求各數(shù)字編碼之間互不為前綴,從而不出現(xiàn)誤碼。設(shè)計(jì)一個(gè)程序構(gòu)建一個(gè)赫夫曼樹(shù)輸出最優(yōu)傳輸碼。</

22、p><p>  2、用戶界面命令行界面:</p><p> ?。?)構(gòu)建只含根結(jié)點(diǎn)的帶權(quán)二叉樹(shù)。</p><p> ?。?)輸出第一部對(duì)應(yīng)二叉樹(shù)的赫夫曼樹(shù)。</p><p> ?。?)給定任意進(jìn)制(小于17)的數(shù)字在電報(bào)通信中各自出現(xiàn)的頻率,然后分別列出十個(gè)數(shù)字各自的最佳編碼(最佳前綴碼)以及打印出傳輸10m個(gè)按照給定頻率出現(xiàn)的十進(jìn)制數(shù)字時(shí)所需要

23、的二進(jìn)制數(shù)碼的個(gè)數(shù)。</p><p><b>  3、輸入方式:</b></p><p> ?。?)輸入二叉樹(shù)的個(gè)數(shù)(小于17)以及各個(gè)二叉樹(shù)的權(quán)值。</p><p> ?。?)輸入相關(guān)數(shù)據(jù):</p><p>  ①、按順序輸入n個(gè)n個(gè)數(shù)字在電報(bào)中出現(xiàn)的頻率。</p><p> ?、?、輸入需要傳輸

24、的n進(jìn)制數(shù)字的個(gè)數(shù)參數(shù)m(總數(shù)為</p><p><b>  10m 個(gè))。</b></p><p><b>  4、輸出方式:</b></p><p> ?。?)輸出所創(chuàng)建赫夫曼樹(shù)中各結(jié)點(diǎn)的信息:(權(quán)值,父節(jié)點(diǎn)位置,左兒子位置,右兒子位置)。</p><p> ?。?)輸出相關(guān)數(shù)據(jù):</p&

25、gt;<p> ?。?)輸出0到n各個(gè)數(shù)字的最佳編碼(最佳前綴碼)。</p><p>  (4)輸出所創(chuàng)建的赫夫曼樹(shù)的樹(shù)權(quán)值(WPL)。</p><p>  (5)輸出所傳輸?shù)亩M(jìn)制數(shù)碼(電文長(zhǎng)度)的總長(zhǎng)度。</p><p><b>  5、數(shù)據(jù)存儲(chǔ)方式:</b></p><p>  全部在內(nèi)存存放,不使用

26、硬盤(pán)上的文件或其他數(shù)據(jù)源,程序執(zhí)行過(guò)程中和結(jié)束后不保存數(shù)據(jù)。</p><p><b>  6、程序功能:</b></p><p> ?。?)創(chuàng)建赫夫曼數(shù)。</p><p> ?。?)實(shí)現(xiàn)赫夫曼樹(shù)在電報(bào)通信中的應(yīng)用。</p><p><b>  三、概要設(shè)計(jì)</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é)點(diǎn)*/</p><p>  }Htnode;/*哈夫曼樹(shù)結(jié)點(diǎn)類型*/</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;/*編碼的長(zhǎng)度*/</p><p>  }CodeType;/*葉編碼類型 */</p><p><b>  CodeType</b></p><p>

30、;<b>  2、數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)</b></p><p><b> ?、?</b></p><p>  用線性表存儲(chǔ)二叉樹(shù)各個(gè)結(jié)點(diǎn),通過(guò)線性表構(gòu)造赫夫曼樹(shù):</p><p>  Htnode huftree[]</p><p><b> ?、?</b></p>&l

31、t;p>  用線性表存儲(chǔ)各葉子的二進(jìn)制編碼:</p><p>  CodeType[]</p><p>  3、程序所用各函數(shù)功能:</p><p><b> ?。?)創(chuàng)建赫夫曼樹(shù)</b></p><p>  void Hufcreating(Htnode huftree[], int n)</p>

32、<p>  輸入用線性表Htnode huftree[]存儲(chǔ)的n個(gè)只含根結(jié)點(diǎn)的二叉樹(shù),及其權(quán)值。函數(shù)將各個(gè)根結(jié)點(diǎn)的父節(jié)點(diǎn)及孩子都初始化為-1,表示赫夫曼樹(shù)創(chuàng)建之前,每個(gè)根結(jié)點(diǎn)不存在父節(jié)點(diǎn)和孩子,通過(guò)Selection()函數(shù)對(duì)各根結(jié)點(diǎn)的調(diào)用,逐步創(chuàng)建各個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn),最后構(gòu)建成為赫夫曼樹(shù),n個(gè)二叉樹(shù)最終成為了赫夫曼樹(shù)的葉子。</p><p><b>  選擇最小兩個(gè)結(jié)點(diǎn)</b>&l

33、t;/p><p>  void Selection(Htnode huftree[], int n, int *s1, int *s2)</p><p>  對(duì)線性表Htnode huftree[]存儲(chǔ)的n個(gè)只含根結(jié)點(diǎn)的二叉樹(shù)進(jìn)行選擇。選擇兩個(gè)權(quán)值最小的根結(jié)點(diǎn)分別作為新產(chǎn)生結(jié)點(diǎn)孩子,新結(jié)點(diǎn)作為兩最小結(jié)點(diǎn)的父結(jié)點(diǎn),繼續(xù)存儲(chǔ)到線性表Htnode huftree[]的n個(gè)根結(jié)點(diǎn)后面。循環(huán)調(diào)用Sele

34、ction()函數(shù)對(duì)父結(jié)點(diǎn)為-1的所有結(jié)點(diǎn)再做選擇,逐步構(gòu)建赫夫曼樹(shù)。</p><p>  給哈夫曼樹(shù)中各個(gè)節(jié)點(diǎn)的編碼</p><p>  void HuftreeCode(Htnode huftree[], CodeType cd[], int n)</p><p>  對(duì)創(chuàng)建好的赫夫曼樹(shù)的葉子進(jìn)行編碼。</p><p><b>

35、  函數(shù)功能示意圖</b></p><p><b>  4、程序流程圖</b></p><p><b>  詳細(xì)設(shè)計(jì)</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é)點(diǎn)*/</p><p>  }Htnode;/*哈夫曼樹(shù)結(jié)點(diǎn)類型*/</p&

37、gt;<p>  typedef struct</p><p><b>  {</b></p><p>  char *code;/*編碼*/</p><p>  int length;/*編碼的長(zhǎng)度*/</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");/*程序開(kāi)始*/</p><p>  loop: printf (" * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");</p><p>  printf (" * 1.構(gòu)建只含根結(jié)點(diǎn)的帶權(quán)二叉樹(shù)

44、 *\n"); </p><p>  printf (" * 2.輸出對(duì)應(yīng)二叉樹(shù)的赫夫曼樹(shù)(必須先創(chuàng)建二叉樹(shù)) *\n"); </p><p>  printf (" * 3.赫夫曼樹(shù)在電報(bào)通信中的應(yīng)用

45、 *\n");</p><p>  printf (" * 4.退出 *\n"); </p><p>  printf (" * * * * * * * * * * * * * * * * * * * * * *

46、 * * * * * * *\n"); </p><p>  printf (" 請(qǐng)選擇指令:"); </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! 輸入值錯(cuò)誤!請(qǐng)?jiān)俅屋斎?\n");</p><p>  goto loop;</p><p><b>  }</b></p><

54、p><b>  }</b></p><p><b>  }</b></p><p>  3、子函數(shù)一:創(chuàng)建赫夫曼樹(shù)</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;/*計(jì)算哈夫曼樹(shù)的結(jié)點(diǎn)總數(shù)*/</p><p>  for(i = 1; i <= n; i++)/*初始化每片葉子自成一棵樹(shù)*/</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é)點(diǎn)左孩子,右孩子,父結(jié)點(diǎn)初&

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個(gè)非葉子結(jié)點(diǎn)的循環(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é)點(diǎn)*/</p><p>  huftree[n + i].weight = sum;</p><p>  huftree[s1]

60、.parent = n+i;</p><p>  huftree[s2].parent = n+i;/*最小的兩個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)的數(shù)組的下標(biāo)*/</p><p>  huftree[n + i].lchild = s1;/*父節(jié)點(diǎn)的左孩子下標(biāo)*/</p><p>  huftree[n + i].rchild = s2;/*父節(jié)點(diǎn)的右孩子下標(biāo)*/</p>

61、<p>  }/*end for*/</p><p><b>  }</b></p><p>  4、子函數(shù)二:選擇最小兩個(gè)節(jié)點(diǎn)</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;/*兩個(gè)最小數(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ù)三:求哈夫曼樹(shù)中各個(gè)節(jié)點(diǎn)的編碼</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++)/*開(kāi)始求每個(gè)葉子結(jié)點(diǎn)的編碼*/ </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é)點(diǎn)%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)生存儲(chǔ)編碼的空間*/</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é)點(diǎn)的帶權(quán)二叉樹(shù))</p><p>  void case1(Htnode huftree[],int *n)</p><p><b>  {</b></p><p>  system("cls");</p

76、><p>  printf(" 《歡迎構(gòu)建二叉樹(shù)!O(∩_∩)O~》\n\n");</p><p><b>  int i,m;</b></p><p>  printf("請(qǐng)輸入只含根結(jié)點(diǎn)的帶權(quán)二叉樹(shù)的個(gè)數(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! 輸入值過(guò)大!請(qǐng)?jiān)俅屋斎?\n\n");</p><p>&l

78、t;b>  else</b></p><p><b>  {</b></p><p>  printf("分別輸入每一個(gè)二叉樹(shù)的權(quán)值:(不含小數(shù))\n");</p><p>  for(i=1;i<m+1;i++)</p><p><b>  {</b>&

79、lt;/p><p>  printf("第%d個(gè)二叉樹(shù)的權(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é)點(diǎn)的帶權(quán)二叉樹(shù)構(gòu)建完畢!\n\n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  7、case2.h(輸出對(duì)應(yīng)二叉樹(shù)的赫夫曼樹(shù)(必

81、須先創(chuàng)建二叉樹(shù)))</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!您必須在選項(xiàng)一中先創(chuàng)建二叉樹(shù)。");</p><p><b>  else</b></p><p&g

83、t;<b>  {</b></p><p>  printf(" 《歡迎進(jìn)入創(chuàng)建赫夫曼樹(shù)界面!O(∩_∩)O~》\n\n");</p><p>  printf("分別輸出個(gè)結(jié)點(diǎn)在線性表中的詳細(xì)信息:('-1'表示該位置不存在)\n");</p><p>  for(

84、i=1;i<2*m-1;i++)</p><p><b>  {</b></p><p>  //printf("第%d個(gè)結(jié)點(diǎn): (權(quán)值:%d,父結(jié)點(diǎn)位置:%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個(gè)結(jié)點(diǎn): (權(quán)值:%d,父結(jié)點(diǎn)位置:%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!赫夫曼樹(shù)構(gòu)建完畢!\n");</p><p><b>  }</b></p><p><b>  }</b></p>

87、<p>  printf("\n\n O(∩_∩)O~GOOD!赫夫曼樹(shù)構(gòu)建完畢!\n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  8、case3.h(赫夫曼樹(shù)在電報(bào)通信中的應(yīng)用)</p>&

88、lt;p>  void case3()</p><p><b>  {</b></p><p>  system("cls");</p><p>  Htnode huftree[34];/*赫夫曼樹(shù)的數(shù)組*/</p><p>  CodeType cd[17];/*葉的編碼數(shù)組*/</p

89、><p>  int n,i,wpl=0, sum=0,m;/*節(jié)點(diǎn)權(quán)值的臨時(shí)存放及節(jié)點(diǎn)的個(gè)數(shù)*/ </p><p><b>  int temp;</b></p><p><b>  char j;</b></p><p>  printf(" 《歡迎您使用赫夫

90、曼樹(shù)的通信編碼功能!O(∩_∩)O~》\n\n\n");</p><p>  printf("開(kāi)始執(zhí)行!請(qǐng)按回車!\n");</p><p>  fflush(stdin);</p><p>  getchar();</p><p><b>  while (1)</b></p>

91、<p><b>  {</b></p><p>  printf("輸入電報(bào)撥號(hào)中的數(shù)字進(jìn)制數(shù)(大于1小于17): ");/*輸入帶權(quán)節(jié)點(diǎn)的個(gè)數(shù)*/</p><p>  scanf("%d",&n);</p><p>  if(n < 17)</p><p

92、><b>  {</b></p><p>  printf("按提示順序分別輸入各個(gè)數(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é)點(diǎn)的帶權(quán)二叉樹(shù):</p><p>  返回菜單后選擇2,輸出對(duì)應(yīng)二叉樹(shù)的赫夫曼樹(shù):</p><p>  4、返回菜單后選擇3,測(cè)試赫夫曼樹(shù)在電報(bào)通信中的運(yùn)用:</p><p>  5、返回菜單后選擇4,退出菜單界面:</p><p><b>  六、心得總結(jié)</b></p>&l

96、t;p>  經(jīng)過(guò)本次課程設(shè)計(jì)的學(xué)習(xí),我對(duì)C語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)對(duì)程序的編寫(xiě)有了更深刻的了解,一個(gè)完整的,健壯的程序需要有合理的算法和數(shù)據(jù)結(jié)構(gòu)作為基礎(chǔ),算法是程序的靈魂,是程序的主線,是實(shí)現(xiàn)問(wèn)題的方法和基本步驟的描述,而一個(gè)好的算法的實(shí)現(xiàn)要建立在合理熟練的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)上 </p><p>  編寫(xiě)代碼前之前要對(duì)所要編譯的程序有個(gè)整體的了解,需要用什么樣的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu),用什么樣的算法去實(shí)現(xiàn)。要重視對(duì)結(jié)構(gòu)體

97、變量的運(yùn)用,因?yàn)闊o(wú)論是線形結(jié)構(gòu)還是鏈?zhǔn)浇Y(jié)構(gòu)都難免用到結(jié)構(gòu)體變量,結(jié)構(gòu)體中要包含所要描述問(wèn)題的各個(gè)數(shù)據(jù)域和指針域的指向;程序設(shè)計(jì)中最重要的也是最容易出錯(cuò)的地方是指針,因此要熟練掌握指針的使用方法,對(duì)整個(gè)程序中指針的指向,什么時(shí)候?yàn)榭眨写_切的了解,否則很容易出錯(cuò),但要是能將指針用好的話程序設(shè)計(jì)也就簡(jiǎn)單了許多;關(guān)于數(shù)組,在調(diào)用函數(shù)實(shí)參時(shí)也容易出錯(cuò),因?yàn)樵谟脭?shù)組做實(shí)參時(shí)傳遞的是數(shù)組指針,而這一點(diǎn)在本次課程設(shè)計(jì)中,當(dāng)我用到文件包含的方式,讓主函

98、數(shù)main()調(diào)用子文件中的子函數(shù)是,數(shù)組做參數(shù)傳遞過(guò)程中遇到了許多細(xì)節(jié)問(wèn)題,對(duì)編程的進(jìn)度造成了很大的阻礙。 </p><p>  要想編譯出一個(gè)好的程序真不是一件簡(jiǎn)單的事情,這次的作業(yè)又花了我大量的時(shí)間,但是無(wú)論是C語(yǔ)言還是數(shù)據(jù)結(jié)構(gòu),在學(xué)習(xí)過(guò)程中收獲最大的還是最后的大作業(yè),通過(guò)大作業(yè),對(duì)一些實(shí)際操作中算法的描述,數(shù)據(jù)結(jié)構(gòu)的使用才有了更深一層的了解,同時(shí)也積累了一些在解決實(shí)際問(wèn)題中的經(jīng)驗(yàn),處理一般的編譯,

99、連接錯(cuò)誤的方法,并能夠一步一步的進(jìn)行調(diào)試,編程的過(guò)程確實(shí)很辛苦,但是有了成果之后又覺(jué)得很輕松。所以感覺(jué)要是投入進(jìn)去的話編程還不是很難的,只要能夠把基礎(chǔ)的知識(shí)學(xué)好,多在操作中練習(xí),多積累些解決實(shí)際問(wèn)題的經(jīng)驗(yàn),以后再做這方面的工作就簡(jiǎn)單多了。</p><p>  課題設(shè)計(jì)使得我對(duì)這學(xué)期所學(xué)的專業(yè)課有了更為深刻的認(rèn)識(shí),對(duì)于我來(lái)說(shuō)這不僅僅是一次課程設(shè)計(jì),更重要的是使我明白了在學(xué)習(xí)的過(guò)程中,所有的問(wèn)題要一個(gè)人去面對(duì),有問(wèn)題

100、要想盡各種辦法解決,克服困難,在解決這些困難的過(guò)程中提高了我學(xué)習(xí)的能力、解決問(wèn)題的能力和實(shí)際工作的能力,學(xué)到了許多書(shū)本以外的認(rèn)識(shí)。通過(guò)這次課程設(shè)計(jì)我覺(jué)得我學(xué)習(xí)《數(shù)據(jù)結(jié)構(gòu)》的方法存在一定的弊端,《數(shù)據(jù)結(jié)構(gòu)》的效果直接影響到我對(duì)其它專業(yè)課的學(xué)習(xí)和今后業(yè)務(wù)的成長(zhǎng)。我覺(jué)得我對(duì)于《數(shù)據(jù)結(jié)構(gòu)》的學(xué)習(xí)不僅包括理論部分的學(xué)習(xí),還要讓我勤動(dòng)手,多實(shí)踐。最后我要衷心的感謝所有給予我?guī)椭椭笇?dǎo)的莫老師,我的同學(xué):雷艷雄、黎盛才、劉宇等人,沒(méi)有他們的幫助我的課

101、程設(shè)計(jì)也不會(huì)完成得這么順利!</p><p>  最后,通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正學(xué)以致用,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。而且,編程非??简?yàn)人的耐心和信心,這也在性格方面給了我很多磨練。通過(guò)這次課程設(shè)計(jì)之后,我把前面所學(xué)過(guò)的知識(shí)又重新溫故了一遍,可以說(shuō)是收獲不少。</p>

102、<p><b>  七、參考資料</b></p><p>  譚浩強(qiáng) 《C程序設(shè)計(jì)》 清華大學(xué)出版社</p><p>  譚浩強(qiáng) 《C++程序設(shè)計(jì)》 清華大學(xué)出版社</p><p>  嚴(yán)蔚敏、吳偉民 《數(shù)據(jù)結(jié)構(gòu)》

溫馨提示

  • 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ù)僅提供信息存儲(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)論