2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩13頁(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><b>  題目:約瑟夫環(huán)</b></p><p><b>  問(wèn)題描述:</b></p><p>  編號(hào)是 1,2,……,n 的 n 個(gè)人按照順時(shí)針?lè)较驀蝗?,每個(gè)人持有一個(gè) 密碼(正整數(shù))。一開(kāi)始任選一個(gè)正整數(shù)作為報(bào)數(shù)上限值 m,從

2、第一個(gè)人開(kāi)始順 時(shí)針?lè)较蜃?1 開(kāi)始順序報(bào)數(shù),報(bào)到 m 時(shí)停止報(bào)數(shù)。報(bào) m 的人出列,將他的密碼 作為新的 m 值,從他在順時(shí)針?lè)较虻南乱粋€(gè)人開(kāi)始重新從 1 報(bào)數(shù),如此下去, 直到所有人全部出列為止。設(shè)計(jì)一個(gè)程序來(lái)求出出列順序。 </p><p><b>  基本要求:</b></p><p>  利用單向循環(huán)鏈表存儲(chǔ)結(jié)構(gòu)模擬此過(guò)程,按照出列的順序輸出各個(gè)人的編 號(hào)。

3、此題所用的循環(huán)鏈表中不需要“頭結(jié)點(diǎn)”,請(qǐng)注意空表和非空表的界限。</p><p><b>  測(cè)試數(shù)據(jù):</b></p><p>  m 的初值為 20,n=7 ,7 個(gè)人的密碼依次為 3,1,7,2,4,8,4,首先 m的值為6 則正確的輸出應(yīng)該是6,1,4,7,2,3,5。</p><p><b>  要求:</b>&

4、lt;/p><p>  輸入數(shù)據(jù):首先輸入待處理人員數(shù)及他們的密碼,然后輸入 m 的初值,建立單循環(huán)鏈表。 </p><p><b>  輸出形式:</b></p><p>  建立一個(gè)輸出函數(shù),將正確的出列序列輸出。</p><p><b>  正文:</b></p><p>

5、<b>  一:需求分析</b></p><p><b>  (1)輸入形式:</b></p><p>  首先輸入待處理人員數(shù)及他們的密碼,然后輸入 m 的初值,建立單循環(huán)鏈表。</p><p>  此程序設(shè)n<=30,所用的循環(huán)鏈表中不需要“頭結(jié)點(diǎn)”,請(qǐng)注意空表和非空表的界限。</p><p&

6、gt;<b>  輸出形式:</b></p><p>  建立一個(gè)輸出函數(shù),將正確的出列序列輸出。</p><p>  程序所能得到的功能:</p><p>  提供用戶從鍵盤(pán)輸入,Joseph約瑟夫環(huán)的必要數(shù)據(jù),并顯示出列順序。</p><p><b>  測(cè)試數(shù)據(jù):</b></p>

7、<p><b>  輸入207</b></p><p>  3 1 7 2 4 8 4</p><p><b>  輸出</b></p><p>  6 1 4 7 2 3 5</p><p><b>  二、概要設(shè)

8、計(jì)</b></p><p>  以單向循環(huán)鏈表實(shí)現(xiàn)該結(jié)構(gòu)。</p><p>  1. 抽象數(shù)據(jù)類型的定義為:</p><p><b>  ADT LNode</b></p><p><b>  {</b></p><p>  數(shù)據(jù)對(duì)象:D={ai | ai∈Cha

9、rSet,i= 1,2,…,n,n≥0}</p><p>  數(shù)據(jù)關(guān)系:R1={< ai-1 ,ai > | ai ∈D, I=2,…,n}</p><p><b>  基本操作:</b></p><p>  InitList(&L)</p><p>  操作結(jié)果:構(gòu)造一個(gè)最大長(zhǎng)度ms內(nèi)容為空的有序表

10、L。</p><p>  ClearList(&L)</p><p>  初始條件:線性表L已經(jīng)存在。</p><p>  操作結(jié)果:將L重置為空表。</p><p>  EmptyList(L)</p><p>  初始條件:線性表L已經(jīng)存在。</p><p>  操作結(jié)果:若L為空表

11、返回TRUE,否則返回FALSE。</p><p>  ListLength(L)</p><p>  初始條件:線性表L已經(jīng)存在。</p><p>  操作結(jié)果:返回L中數(shù)據(jù)元素個(gè)數(shù)。</p><p>  GetElem(L, pos, &e)</p><p>  初始條件:線性表L已經(jīng)存在,1≤i≤List

12、Length(L)。</p><p>  操作結(jié)果:用e返回L中第i個(gè)數(shù)據(jù)元素的值。</p><p>  LocateElem(L, e)</p><p>  初始條件:線性表L已經(jīng)存在。</p><p>  操作結(jié)果:返回L中第1個(gè)與e相同的元素的位序。若不存在返回0。</p><p>  ListInsert (L

13、, i, e)</p><p>  初始條件:線性表L已經(jīng)存在。</p><p>  操作結(jié)果:在L中的第i個(gè)元素的位置之前插入新元素 e,L的長(zhǎng)度加1。ListDelete(L, pos, e)</p><p>  初始條件:線性表L已經(jīng)存在,1≤i≤ListLength(L)。</p><p>  操作結(jié)果:刪除L的第i個(gè)數(shù)據(jù)元素,并用e

14、返回其值,L的長(zhǎng)度減1。</p><p>  ListTraverse(L)</p><p>  初始條件:線性表L已經(jīng)存在。</p><p>  操作結(jié)果:依次對(duì)L的每個(gè)數(shù)據(jù)元素進(jìn)行訪問(wèn)。</p><p>  }ADT SqList</p><p>  本程序包含以下模塊:</p><p>&

15、lt;b> ?。?)主程序模塊:</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  初始化;</b></p><p><b>  輸入數(shù)據(jù);</b></p><p>

16、<b>  執(zhí)行功能;</b></p><p><b>  顯示結(jié)果;</b></p><p><b>  }</b></p><p> ?。?)各功能模塊——實(shí)現(xiàn)順序表的各項(xiàng)功能。</p><p><b>  各模塊的調(diào)用關(guān)系:</b></p>

17、;<p><b>  ↓</b></p><p><b>  三、詳細(xì)設(shè)計(jì)</b></p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  typedef struct Node<

18、;/p><p><b>  {</b></p><p><b>  int data;</b></p><p>  int password;</p><p>  struct Node *next;</p><p>  }Node, *LinkList;</p>

19、<p>  void CreatLinkList(LinkList *L, int n)</p><p><b>  {</b></p><p>  Node *p, *q;</p><p><b>  int i;</b></p><p>  (*L) = (LinkList)mallo

20、c(sizeof(Node));</p><p>  if ((*L) == NULL)</p><p><b>  {</b></p><p>  printf("memory allocation failed, goodbye");</p><p><b>  exit(1);<

21、/b></p><p><b>  }</b></p><p><b>  p = (*L);</b></p><p>  printf("請(qǐng)輸入第1個(gè)人的密碼:");</p><p>  scanf("%d",&(p->password)

22、);</p><p>  p->data = 1;</p><p>  for (i = 2; i <= n; i++)</p><p><b>  {</b></p><p>  q = (LinkList)malloc(sizeof(Node));</p><p>  if (q

23、== NULL)</p><p><b>  {</b></p><p>  printf("memory allocation failed, goodbye");</p><p><b>  exit(1);</b></p><p><b>  }</b>

24、;</p><p>  printf("\n請(qǐng)輸入第%d個(gè)人的密碼:",i);</p><p>  scanf("%d",&(q->password));</p><p>  q->data = i;</p><p>  p->next = q;</p><

25、p><b>  p = q;</b></p><p><b>  }</b></p><p>  p->next = (*L);}</p><p>  void Output(LinkList *L, int m, int n)</p><p><b>  {</b>

26、;</p><p>  Node *p, *q;</p><p>  int i = 1;</p><p><b>  p = (*L);</b></p><p>  printf("輸出出對(duì)序列:");</p><p><b>  while (n)</b&g

27、t;</p><p><b>  {</b></p><p>  while (i != m)</p><p><b>  {</b></p><p><b>  q = p;</b></p><p>  p = p->next;</p>

28、;<p><b>  i++;</b></p><p><b>  }</b></p><p>  printf("%-3d",p->data);</p><p>  m = p->password;</p><p>  q->next = p-&

29、gt;next;</p><p><b>  free(p);</b></p><p>  p = q->next;</p><p><b>  i = 1;</b></p><p><b>  n--;</b></p><p><b>

30、  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p>  int main(void)</p><p><b>  {</b></p><p>  LinkList L;<

31、/p><p><b>  int n, m;</b></p><p>  printf("請(qǐng)輸入人數(shù):");</p><p>  scanf("%d", &n);</p><p>  getchar();</p><p>  CreatLinkList(

32、&L, n);</p><p>  printf("請(qǐng)輸入第一個(gè)報(bào)號(hào)數(shù):");</p><p>  scanf("%d",&m);</p><p>  Output(&L, m, n);</p><p>  system("pause");</p>

33、<p><b>  return 0;</b></p><p><b>  }</b></p><p><b>  四、調(diào)試分析</b></p><p>  程序的編寫(xiě)和調(diào)試基本正常。</p><p>  遇到的問(wèn)題主要是:指針的指向的邊界問(wèn)題。</p>

34、;<p>  本實(shí)驗(yàn)采用數(shù)據(jù)抽象的與模塊化程序設(shè)計(jì)方法。思路清晰,實(shí)現(xiàn)時(shí)調(diào)試順利,各模塊具有很好的可重用性,得到了一次良好的程序設(shè)</p><p><b>  計(jì)訓(xùn)練。</b></p><p><b>  五、用戶使用說(shuō)明</b></p><p><b>  如何使用,詳細(xì)步驟</b>&

35、lt;/p><p>  根據(jù)提示輸入人數(shù)和每個(gè)人的信息</p><p><b>  調(diào)試結(jié)果</b></p><p><b>  七: 參考文獻(xiàn)</b></p><p>  1. 嚴(yán)蔚敏, 吳偉民. 數(shù)據(jù)結(jié)構(gòu). 清華大學(xué)出版社, 2005.11</p><p>  2. 譚浩

36、強(qiáng). C語(yǔ)言程序設(shè)計(jì). 清華大學(xué)出版社, 2005.11</p><p>  3. 范輝. Visual C++程序設(shè)計(jì). 高等教育出版社</p><p><b>  題目二</b></p><p><b>  題目:哈夫曼編碼器</b></p><p><b>  問(wèn)題描述:</b

37、></p><p>  利用哈夫曼編碼進(jìn)行信息通信可以大大提高信道利用率,縮短信息傳輸時(shí)間,降低傳 輸成本。但是,這要求在發(fā)送端通過(guò)一個(gè)編碼系統(tǒng)對(duì)待傳數(shù)據(jù)預(yù)先編碼,在接收端將傳 來(lái)的數(shù)據(jù)進(jìn)行譯碼(復(fù)原) 。試為這樣的信息傳輸寫(xiě)一個(gè)哈夫曼編/譯碼系統(tǒng)。 </p><p><b>  基本要求:</b></p><p>  1)I:初始化(I

38、nitialization) 。從終端讀入字符集大小 n,以及 n 個(gè)字符和 n 個(gè)權(quán) 值,建立哈夫曼樹(shù),并將它存于文件 hfmTree 中。輸出哈夫曼樹(shù),及各字符對(duì)應(yīng)的編碼。 </p><p>  2)E:編碼(Encoding)與譯碼(Decoding) 。 編碼(Encoding) 。利用已建好的哈夫曼樹(shù)(如不在內(nèi)存,則從文件 htmTree 中讀 入) ,對(duì)文件 ToBeTran 中的正文進(jìn)行編碼,然后將

39、結(jié)果存入文件 CodeFile 中。</p><p>  3)D:譯碼(Decoding) 。利用已建好的哈夫曼樹(shù)將文件 CodeFile 中的代碼進(jìn)行譯碼, 結(jié)果存入文件 TextFile 中。 </p><p>  4)P:印代碼文件(Print) 。將文件 CodeFile 以緊湊格式顯示在終端上,每行 50 個(gè)代 碼。同時(shí)將此字符形式的編碼寫(xiě)入文件 CodePrint 中。 <

40、;/p><p>  5)T:印哈夫曼樹(shù)(Tree Printing) 。將已在內(nèi)存中的哈夫曼樹(shù)以直觀的方式(樹(shù)或 凹入表形式)顯示在終端上,同時(shí)將此字符形式的哈夫曼樹(shù)寫(xiě)入文件 TreePrint 中。 </p><p><b>  測(cè)試數(shù)據(jù):</b></p><p>  (1) 利用教科書(shū)例6-2中的數(shù)據(jù)調(diào)試程序。</p><p

41、>  (2) 用下表給出的字符集和頻度的實(shí)際統(tǒng)計(jì)數(shù)據(jù)建立哈夫曼樹(shù),并實(shí)現(xiàn)以下報(bào)文的編碼和譯碼:“THIS PROGRAM IS MY FAVORITE”。</p><p><b>  正文:</b></p><p><b>  需求分析</b></p><p><b>  輸入形式:</b>&l

42、t;/p><p>  程序的輸入,包含輸入的數(shù)據(jù)格式和說(shuō)明: there are three students(char 型) </p><p><b>  輸出形式:</b></p><p>  程序輸出的形式:1)統(tǒng)計(jì)字符出現(xiàn)次數(shù)并輸出 ;2) 根據(jù)字符出現(xiàn)次數(shù)求出哈夫曼編碼并輸出(根據(jù)算法差異得到的編碼可能不同,但應(yīng)具有兩個(gè)特征,一是編碼長(zhǎng)

43、度應(yīng)與表中相同,二是編碼應(yīng)該是前綴編碼);3) 以樹(shù)的形式輸出哈夫曼樹(shù) .</p><p>  程序所能達(dá)到的功能:</p><p>  1)I:初始化(Initialization) 。從終端讀入字符集大小 n,以及 n 個(gè)字符和 n 個(gè)權(quán) 值,建立哈夫曼樹(shù),并將它存于文件 hfmTree 中。輸出哈夫曼樹(shù),及各字符對(duì)應(yīng)的編碼。 2)W:輸入(Input) 。從終端讀入需要編碼的字符串

44、s,將字符串 s 存入文件 Tobetran.txt 中。 3)E:編碼(Encoding)與譯碼(Decoding) 。 編碼(Encoding) 。利用已建好的哈夫曼樹(shù)(如不在內(nèi)存,則從文件 htmTree 中讀 入) ,對(duì)文件 ToBeTran 中的正文進(jìn)行編碼,然后將結(jié)果存入文件 CodeFile 中。 譯碼(Decoding) 。利用已建好的哈夫曼樹(shù)將文件 CodeFile 中的代碼進(jìn)行譯碼, 結(jié)果存入文件 TextFile

45、中。 印代碼文件(Print) 。將文件 CodeFile 以緊湊格式顯示在終端上,每行 50 個(gè)代 碼。同時(shí)將此字符形式的編碼寫(xiě)入文件 CodePrint 中。 4)T:印哈夫曼樹(shù)(Tree Printing) 。將已在內(nèi)存中的哈夫曼樹(shù)以直觀的方式(樹(shù)或 凹入表形式)顯示在終端上,同時(shí)將此字符形式的哈夫</p><p><b>  測(cè)試數(shù)據(jù):</b></p><p>

46、;<b>  概要設(shè)計(jì)</b></p><p><b>  ADT {</b></p><p>  數(shù)據(jù)對(duì)象V: V是具有不同權(quán)值的字符集。</p><p><b>  基本操作P:</b></p><p>  InitCode(HTCode *Hr,int &n)&l

47、t;/p><p><b>  初始化:建立Hr</b></p><p>  操作結(jié)果:存儲(chǔ)n個(gè)編碼字符、權(quán)值。</p><p>  Select(Huffmantree &Ht,int end,int *s1,int *s2)</p><p>  初始化:HT為建好的哈夫曼樹(shù),end為開(kāi)始查找的位置,s1,s2為最小

48、的兩個(gè)數(shù)。</p><p>  操作結(jié)果:從剩下的數(shù)種尋找到兩個(gè)最小的數(shù),返回其值。</p><p>  InitHfmtree(Huffmantree &Ht,HTCode Hr[],int &n)</p><p>  初始化:建立哈夫曼樹(shù)Ht</p><p>  操作結(jié)果:對(duì)傳入的字符進(jìn)行編碼存入Hr中</p>

49、<p>  Encoding(HTCode *Hr,int n)</p><p>  初始化:Hr已經(jīng)存儲(chǔ)編碼、字符</p><p>  操作結(jié)果:從Hr中獲取字符以及編碼進(jìn)行輸出</p><p>  Decoding(HTCode *Hr,int n)</p><p>  初始化:Hr已經(jīng)存儲(chǔ)編碼、字符</p>

50、<p>  操作結(jié)果:從Hr中獲取編碼的字符進(jìn)行輸出</p><p>  TreePrint(Huffmantree &Ht,HTCode Hr[],int n)</p><p>  初始化:哈夫曼樹(shù)Ht,存儲(chǔ)信息Hr</p><p>  操作結(jié)果:打印哈夫曼樹(shù)的各個(gè)結(jié)點(diǎn)</p><p><b>  }</b

51、></p><p><b>  詳細(xì)設(shè)計(jì)</b></p><p>  #include <dos.h></p><p>  #include <conio.h></p><p>  #include <stdio.h></p><p>  #include

52、 <stdlib.h></p><p>  #include <string.h></p><p>  typedef struct</p><p><b>  {</b></p><p>  float weight; //結(jié)點(diǎn)權(quán)值</p><p>  unsigned

53、int parent,lchild,rchild; //結(jié)點(diǎn)的父指針,左右孩子指針</p><p>  }HTNode,*HuffmanTree; //動(dòng)態(tài)分配數(shù)組存儲(chǔ)哈夫曼樹(shù)</p><p>  typedef char **HuffmanCode; //動(dòng)態(tài)分配數(shù)組存儲(chǔ)哈夫曼編碼表</p><p>  void CreateHuffmanTree(Huffman

54、Tree &,float*,int ); //生成哈夫曼樹(shù)</p><p>  void HuffmanCoding(HuffmanTree,HuffmanCode &,int ); //對(duì)哈夫曼樹(shù)進(jìn)行編碼</p><p>  void PrintHuffmanCode(HuffmanCode,float*,int); //顯示哈夫曼編碼</p><p&

55、gt;  void Select(HuffmanTree,int,int&,int&); //在數(shù)組中尋找權(quán)值最小的兩個(gè)結(jié)點(diǎn)</p><p>  void main()</p><p><b>  {</b></p><p>  HuffmanTree HT; //哈夫曼樹(shù)HT</p><p>  Huf

56、fmanCode HC; //哈夫曼編碼表HC</p><p>  int n,i; //n是哈夫曼樹(shù)葉子結(jié)點(diǎn)數(shù)</p><p>  float *w; //w存放葉子結(jié)點(diǎn)權(quán)值</p><p>  char j='y';</p><p>  while(j!='N'&&j!='n'

57、;)</p><p><b>  {</b></p><p>  printf("請(qǐng)輸入字符數(shù)目:");</p><p>  scanf("%d",&n); //輸入字符數(shù)目</p><p><b>  if(n<=1) </b></p&g

58、t;<p><b>  {</b></p><p>  printf("該數(shù)不合理!\n");continue;</p><p><b>  }</b></p><p>  w=(float*)malloc(n*sizeof(unsigned int)); //開(kāi)辟空間存放權(quán)值</p

59、><p>  printf("請(qǐng)輸入各字符出現(xiàn)的次數(shù)/權(quán)值:\n");</p><p>  for(i=0;i<n;i++) scanf("%f",&w[i]); //輸入各字符出現(xiàn)的次數(shù)/權(quán)值</p><p>  CreateHuffmanTree(HT,w,n); //生成哈夫曼樹(shù)</p><

60、p>  HuffmanCoding(HT,HC,n); //進(jìn)行哈夫曼編碼</p><p>  PrintHuffmanCode(HC,w,n); //顯示哈夫曼編碼</p><p>  printf("哈夫曼樹(shù)構(gòu)造完畢!");</p><p>  scanf(" %c",&j);</p><

61、p><b>  }</b></p><p><b>  }</b></p><p>  void CreateHuffmanTree(HuffmanTree &HT,float *w,int n)</p><p>  {//w存放n個(gè)結(jié)點(diǎn)的權(quán)值,將構(gòu)造一棵哈夫曼樹(shù)HT</p><p>

62、<b>  int i,m;</b></p><p>  int s1,s2;</p><p>  HuffmanTree p;</p><p>  if(n<=1) return;</p><p>  m=2*n-1; //n個(gè)葉子結(jié)點(diǎn)的哈夫曼樹(shù),有2*n-1個(gè)結(jié)點(diǎn)</p><p>  H

63、T=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); //開(kāi)辟2*n各結(jié)點(diǎn)空間</p><p>  for(p=HT+1,i=1;i<=n;++i,++p,++w) //進(jìn)行初始化</p><p><b>  {</b></p><p>  p->weight=*w;</p><

64、;p>  p->parent=0;</p><p>  p->lchild=0;</p><p>  p->rchild=0;</p><p><b>  }</b></p><p>  for(;i<=m;++i,++p)</p><p><b>  {&

65、lt;/b></p><p>  p->weight=0;</p><p>  p->parent=0;</p><p>  p->lchild=0;</p><p>  p->rchild=0;</p><p><b>  }</b></p><

66、p>  for(i=n+1;i<=m;++i) //建哈夫曼樹(shù)</p><p><b>  {</b></p><p>  Select(HT,i-1,s1,s2); </p><p>  //從HT[1...i-1]中選擇parent為0且weight最小的兩個(gè)結(jié)點(diǎn),其序號(hào)分別為s1和s2</p><p&g

67、t;  HT[s1].parent=i; HT[s2].parent=i; //修改s1和s2結(jié)點(diǎn)的父指針parent</p><p>  HT[i].lchild=s1; HT[i].rchild=s2; //修改i結(jié)點(diǎn)的左右孩子指針</p><p>  HT[i].weight=HT[s1].weight+HT[s2].weight; //修改權(quán)值</p><p&g

68、t;<b>  }</b></p><p><b>  }</b></p><p>  void HuffmanCoding(HuffmanTree HT,HuffmanCode &HC,int n)</p><p>  {//將有n個(gè)葉子結(jié)點(diǎn)的哈夫曼樹(shù)HT進(jìn)行編碼, 所編的碼存放在HC中</p>&

69、lt;p>  //方法是從葉子到根逆向求每個(gè)葉子結(jié)點(diǎn)的哈夫曼編碼</p><p>  int i,c,f,start;</p><p><b>  char *cd;</b></p><p>  HC=(HuffmanCode)malloc((n+1)*sizeof(char *)); //分配n個(gè)編碼的頭指針向量</p>

70、<p>  cd=(char *)malloc(n*sizeof(char)); //開(kāi)辟一個(gè)求編碼的工作空間</p><p>  cd[n-1]='\0'; //編碼結(jié)束符</p><p>  for(i=1;i<=n;++i) //逐個(gè)地求哈夫曼編碼</p><p><b>  {</b></p>

71、<p>  start=n-1; //編碼結(jié)束位置</p><p>  for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent) //從葉子到根逆向求編碼</p><p>  if(HT[f].lchild==c) cd[--start]='0'; //若是左孩子編為'0'</p><p

72、>  else cd[--start]='1'; //若是右孩子編為'1' </p><p>  HC[i]=(char *)malloc((n-start)*sizeof(char)); //為第i個(gè)編碼分配空間</p><p>  strcpy(HC[i],&cd[start]); //將編碼從cd復(fù)制到HC中</p>&

73、lt;p><b>  }</b></p><p>  free(cd); //釋放工作空間</p><p><b>  }</b></p><p>  void PrintHuffmanCode(HuffmanCode HC,float *w,int n)</p><p>  {//顯示有n個(gè)

74、葉子結(jié)點(diǎn)的哈夫曼樹(shù)的編碼表</p><p><b>  int i;</b></p><p>  printf("HuffmanCode is :\n");</p><p>  for(i=1;i<=n;i++)</p><p><b>  {</b></p>

75、<p>  printf(" %3d---",w[i-1])</p><p>  puts(HC[i]);</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p&

76、gt;<p>  void Select(HuffmanTree HT,int t,int&s1,int&s2)</p><p>  {//在HT[1...t]中選擇parent不為0且權(quán)值最小的兩個(gè)結(jié)點(diǎn),其序號(hào)分別為s1和s2 </p><p>  int i,m,n;</p><p>  m=n=10000; </p&

77、gt;<p>  for(i=1;i<=t;i++)</p><p><b>  {</b></p><p>  if(HT[i].parent==0&&(HT[i].weight<m||HT[i].weight<n))</p><p><b>  if(m<n)</b>

78、;</p><p><b>  {</b></p><p>  n=HT[i].weight;s2=i;</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b>

79、</p><p>  m=HT[i].weight;s1=i;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(s1>s2) //s1放較小的序號(hào)</p><p><b>  {</b>&l

80、t;/p><p>  i=s1;s1=s2;s2=i;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  調(diào)試分析</b></p><p> ?。?).問(wèn)題 1:輸入數(shù)據(jù)以存入文件的功能總是出現(xiàn)錯(cuò)誤文

81、檔。 解決辦法:將文件有關(guān)程序全部刪除,重新編寫(xiě)。 </p><p> ?。?).問(wèn)題 2:有時(shí)程序運(yùn)行錯(cuò)誤,是因?yàn)樯偌恿死ㄌ?hào)造成的。解決辦法:仔細(xì)檢查程序。 </p><p>  (3).問(wèn)題 3:在主函數(shù)中調(diào)用各函數(shù)時(shí),機(jī)器總有認(rèn)為是語(yǔ)法錯(cuò)誤。解決辦法:仔細(xì)檢查,發(fā)現(xiàn)是漏寫(xiě)了函數(shù)類型,對(duì)函數(shù)聲明應(yīng)與函數(shù)定義的類型一致。 </p><p><b>  用

82、戶使用說(shuō)明</b></p><p>  請(qǐng)根據(jù)提示一次輸入字符數(shù)目和個(gè)字符數(shù)出現(xiàn)的次數(shù)/權(quán)值,最終得到輸出結(jié)果正如測(cè)試結(jié)果里面所示。</p><p><b>  測(cè)試結(jié)果</b></p><p><b>  七、 參考文獻(xiàn)</b></p><p>  1. 嚴(yán)蔚敏, 吳偉民. 數(shù)據(jù)結(jié)

溫馨提示

  • 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)論