2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  數(shù)學(xué)與計算機學(xué)院</b></p><p><b>  課程設(shè)計說明書</b></p><p>  課 程 名 稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計 </p><p>  課 程 代 碼: </p><p>  題 目:

2、 猴子選大王 </p><p>  年級/專業(yè)/班: 2010級軟件工程2班 </p><p>  學(xué) 生 姓 名: </p><p>  學(xué)   號: </p><p>  開 始 時 間: 2011 年 11 月 9 日</

3、p><p>  完 成 時 間: 2011 年 12 月 30 日</p><p><b>  課程設(shè)計成績:</b></p><p>  指導(dǎo)教師簽名: 年 月 日</p><p>  數(shù) 據(jù) 結(jié) 構(gòu) 課 程 設(shè) 計 任 務(wù) 書</p><p>&l

4、t;b>  一、設(shè)計題目</b></p><p><b>  猴子選大王</b></p><p><b>  主要內(nèi)容</b></p><p>  一堆猴子都有編號,編號是1,2,3 ...m ,這群猴子(m個)按照1-m的順序圍坐一圈,從第1開始數(shù),每數(shù)到第N個,該猴子就要離開此圈,這樣依次下來,直到圈

5、中只剩下最后一只猴子,則該猴子為大王。</p><p>  三、具體要求及應(yīng)提交的材料</p><p>  要求:使用數(shù)組和循環(huán)鏈表等兩種以上的存儲方式來做輸入數(shù)據(jù):輸入m,n m,n 為整數(shù),n<m輸出形式:中文提示按照m個猴子,數(shù)n 個數(shù)的方法,輸出為大王的猴子是幾號 ,建立一個函數(shù)來實現(xiàn)此功能</p><p>  用C/C++語言編程實現(xiàn)上述內(nèi)容,對

6、每個問題寫出一個算法實現(xiàn),并按數(shù)學(xué)與計算機學(xué)院對課程設(shè)計說明書規(guī)范化要求,寫出課程設(shè)計說明書,并提交下列材料:</p><p>  1)課程設(shè)計說明書打印稿一份</p><p>  2)課程設(shè)計說明書電子稿一份;</p><p>  3)源程序電子文檔一份。</p><p>  四、主要技術(shù)路線提示</p><p> 

7、 可采用數(shù)組、鏈表數(shù)據(jù)結(jié)構(gòu)實現(xiàn)。在此基礎(chǔ)上用C/C++實現(xiàn)其操作。</p><p><b>  五、進度安排</b></p><p>  按教學(xué)計劃規(guī)定,數(shù)據(jù)結(jié)構(gòu)課程設(shè)計為2周,其進度及時間大致分配如下:</p><p><b>  六、推薦參考資料</b></p><p>  [1] 嚴蔚敏,吳偉

8、民.數(shù)據(jù)結(jié)構(gòu).清華大學(xué)出版社出版。 </p><p>  [2] 嚴蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)題集(C語言版) .清華大學(xué)出版社.2003年5月。</p><p>  [3] 唐策善,李龍澎.數(shù)據(jù)結(jié)構(gòu)(作C語言描述) .高等教育出版社.2001年9月</p><p>  [4] 朱戰(zhàn)立.數(shù)據(jù)結(jié)構(gòu)(C++語言描述)(第二版本).高等出版社出版.2004年4月</

9、p><p>  [5] 胡學(xué)鋼.數(shù)據(jù)結(jié)構(gòu)(C語言版) .高等教育出版社.2004年8月</p><p>  [6] 徐孝凱 等著.數(shù)據(jù)結(jié)構(gòu)(C語言描述).清華大學(xué)出版社.2004</p><p>  指導(dǎo)教師 簽名日期 年 月 日</p><p>  系 主 任 審核日期 年 月

10、 日</p><p><b>  目 錄 </b></p><p><b>  摘 要4</b></p><p><b>  引 言5</b></p><p><b>  1 需求分析5</b></p><p>  

11、1.1任務(wù)與分析5</p><p><b>  1.2測試數(shù)據(jù)6</b></p><p><b>  2 概要設(shè)計6</b></p><p>  2.1 ADT描述6</p><p>  2.2程序模塊結(jié)構(gòu)7</p><p>  2.21 結(jié)構(gòu)體定義7</p

12、><p>  2.3 各功能模塊8</p><p><b>  3 詳細設(shè)計9</b></p><p>  3.1結(jié)構(gòu)體定義9</p><p>  3.2 初始化10</p><p>  3.3 插入操作10</p><p><b>  4 調(diào)試分析15&

13、lt;/b></p><p>  5 用戶使用說明15</p><p><b>  6 測試結(jié)果16</b></p><p>  6.1 界面運行結(jié)果16</p><p>  6.2子功能測試運行結(jié)果:16</p><p>  6.3 結(jié)束界面(如下圖)18</p>

14、<p><b>  結(jié) 論19</b></p><p><b>  致 謝20</b></p><p><b>  參考文獻21</b></p><p><b>  摘 要 </b></p><p>  隨著計算機的普及,涉及計算機

15、相關(guān)的科目也越來越普遍,其中數(shù)據(jù)結(jié)構(gòu)是計算機專業(yè)重要的專業(yè)基礎(chǔ)課程與核心課程之一,為適應(yīng)我國計算機科學(xué)技術(shù)的發(fā)展和應(yīng)用,學(xué)好數(shù)據(jù)結(jié)構(gòu)非常必要,然而要掌握數(shù)據(jù)結(jié)構(gòu)的知識非常難,所以對“數(shù)據(jù)結(jié)構(gòu)”的課程設(shè)計比不可少。</p><p>  本課程設(shè)計主要通過使用循環(huán)鏈表、數(shù)組、以及單向鏈表,將猴子編號來數(shù)據(jù)化待選猴子坐成一個圈,并對圈內(nèi)的猴子進行報數(shù)選取大王。最終輸出選出的猴子大王的編號。</p><

16、;p>  考慮到循環(huán)鏈表、數(shù)組、以及單向鏈表要使用不同的結(jié)構(gòu)體、算法等,故將不同的三種方法設(shè)計為分開的三個類。只在主函數(shù)中調(diào)用其相應(yīng)的函數(shù)。程序通過調(diào)試運行,結(jié)果與預(yù)計結(jié)果一致,初步實現(xiàn)了設(shè)計功能。</p><p>  關(guān)鍵詞:現(xiàn)代版;隊列(循環(huán)鏈表);隊列(數(shù)組);單向鏈表 ;數(shù)據(jù)結(jié)構(gòu)</p><p><b>  引 言 </b></p>&l

17、t;p><b>  課程設(shè)計任務(wù)</b></p><p>  本課程設(shè)計主要實現(xiàn)在循環(huán)鏈表、數(shù)組、單向鏈表三種不同存儲結(jié)構(gòu)下對問題(即:“一堆猴子都有編號,編號是1,2,3 ...m ,這群猴子(m個)按照1-m的順序圍坐一圈,從第1開始數(shù),每數(shù)到第N個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最后一只猴子,則該猴子為大王?!保崿F(xiàn)要求。依據(jù)猴子的編號數(shù)據(jù)化將猴子用以上方式存儲

18、。并進行報數(shù)入隊,與出隊操作。最終輸出最后一位猴子編號,該猴子為此次當(dāng)選的猴王。</p><p><b>  B、課程設(shè)計性質(zhì)</b></p><p>  數(shù)據(jù)結(jié)構(gòu)課程設(shè)計是重要地實踐性教學(xué)環(huán)節(jié)。在進行了程序設(shè)計語言課和《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)的基礎(chǔ)上,設(shè)計實現(xiàn)相關(guān)的數(shù)據(jù)結(jié)構(gòu)經(jīng)典問題,有助于加深對數(shù)據(jù)結(jié)構(gòu)課程的認識。本課程設(shè)計是數(shù)據(jù)結(jié)構(gòu)中的一個關(guān)于數(shù)組、鏈表等算法的實現(xiàn),

19、包括在存儲結(jié)構(gòu)中添加、刪除操作,最后把結(jié)果輸出。此課程設(shè)計要求對數(shù)組存儲結(jié)構(gòu)和鏈表存儲結(jié)構(gòu)非常熟悉,并能熟練使用它們。</p><p><b>  C、課程設(shè)計目的</b></p><p>  其目的是讓我們在學(xué)習(xí)完C++、數(shù)據(jù)結(jié)構(gòu)等課程基礎(chǔ)上,掌握數(shù)據(jù)的存儲結(jié)構(gòu)、掌握數(shù)據(jù)相應(yīng)的存儲,添加,更新等操作,并用輸出結(jié)果。進一步掌握設(shè)計、實現(xiàn)較大系統(tǒng)的完整過程,包括系統(tǒng)分析

20、、編碼設(shè)計、系統(tǒng)集成、以及調(diào)試分析,熟練掌握數(shù)據(jù)結(jié)構(gòu)的選擇、設(shè)計、實現(xiàn)以及操作方法,為進一步的應(yīng)用開發(fā)打好基礎(chǔ)。</p><p><b>  1 需求分析</b></p><p><b>  1.1任務(wù)與分析</b></p><p>  猴子選大王,眾多猴子紛紛想成為大王,以一統(tǒng)群族。更便享有最高的地位與權(quán)利,因而導(dǎo)致猴子

21、間慘重的事件發(fā)生。在現(xiàn)代發(fā)展的社會中不管人類還是猴子都不想看到如此不幸的畫面。故利用計算機軟件來解決血腥的沖突。</p><p>  即將編號為1,2,……n的一群猴子按照1-n的順序圍坐成一個圈,所以可以用數(shù)組將其以循環(huán)的方式存儲,輸入猴子的總數(shù)m與要報的數(shù)n,且保證n<m。還用rear表示數(shù)組尾front數(shù)組頭,并進行報數(shù),將未報到指定數(shù)的猴子加到rear;用鏈表時可以用指針結(jié)點將一個猴子作為一個結(jié)點存

22、儲,也用front表示鏈表頭,rear表示鏈表尾。將未到報數(shù)的猴子加到鏈表尾;循環(huán)鏈表就將鏈表的頭尾連接,不用將未報到n的猴子加到尾部,只需將報到n的猴子結(jié)點刪除。最后輸出最后一個猴子的信息,便得出該猴子為此次選舉的猴子大王。具體步驟如下:</p><p>  第一步 建立數(shù)組(鏈表),填入猴子編號及猴子出局時報的數(shù);</p><p>  第二步 從第一個猴子報數(shù);</p>

23、<p>  第三步 數(shù)組存儲中將數(shù)m的猴子不作操作,將未數(shù)到的猴子循環(huán)存在數(shù)組中,可以將報過數(shù)的信息猴子覆蓋。鏈表中將報到的猴子結(jié)點刪除;</p><p>  第四步 繼續(xù)報數(shù),重復(fù)第三步。到只剩一個猴子編號;</p><p>  第五步 輸出此猴子的信息。</p><p><b>  1.2測試數(shù)據(jù) </b></p>

24、<p>  1)、輸入猴子數(shù)與出局報數(shù)</p><p><b>  5 2</b></p><p><b>  第3個猴子是大王</b></p><p>  2)、輸入猴子數(shù)與出局報數(shù)</p><p><b>  43 13</b></p><

25、p><b>  第10個猴子是大王</b></p><p>  3)、輸入猴子數(shù)與出局報數(shù)</p><p><b>  121 31</b></p><p><b>  第84個猴子是大王</b></p><p><b>  2 概要設(shè)計</b>&

26、lt;/p><p><b>  2.1 ADT描述</b></p><p><b>  ADT Node{</b></p><p>  數(shù)據(jù)對象:D={ai|ai∈ElemSet,i=1,2,3,…,m}</p><p>  數(shù)據(jù)關(guān)系:R={<ai-1,ai>|ai-1,ai∈≥D,i=2,

27、3,…,m}</p><p><b>  基本操作:</b></p><p><b>  創(chuàng)建數(shù)組,鏈表</b></p><p>  輸入編號猴子信息,進入存儲于數(shù)組,鏈表中</p><p>  報數(shù)開始,報到出局數(shù)的猴子出局</p><p>  輸出選出的猴子大王信息<

28、;/p><p><b>  等等</b></p><p><b>  }ADT Node</b></p><p>  2.2程序模塊結(jié)構(gòu) </p><p>  圖2.1 猴子選大王系統(tǒng)模塊結(jié)構(gòu)圖</p><p>  2.21 結(jié)構(gòu)體定義</p><p>

29、  如下是三種不同存儲方式的存儲結(jié)構(gòu)概要設(shè)計</p><p><b>  a).數(shù)組定義:</b></p><p>  如下是對數(shù)組方式的定義,包含數(shù)組的大小,元素的定義,并用類對其進行封裝。</p><p>  #include <iostream.h>  //命名空間</p><p>  const ma

30、x=100; //宏定義數(shù)組的大小</p><p>  typedef int ElemType; //定義一個元素類型為整型</p><p>  class seq //創(chuàng)建一個類將其進行封裝</p><p><b>  {private:</b></p><p>  ElemType elem[

31、max]; //存儲數(shù)組為私有</p><p>  int front,rear; //在此建立私有的隊列頭、尾</p><p><b>  public:};</b></p><p>  b).單向鏈表定義:</p><p>  如下是單向鏈?zhǔn)降慕Y(jié)構(gòu)體包含一個數(shù)域和一個指下的指針域,數(shù)值域。并也對

32、其用類進行封裝,使其更佳。</p><p>  struct Node //單向鏈表中每個結(jié)點包含一個數(shù)域和一個指下的指針域 </p><p>  { int data; //數(shù)值域</p><p>  Node *next;}; //指針域,指向鏈表的下一個結(jié)點</p><p>  class da

33、nx //建類進行封裝</p><p>  {private: </p><p>  Node *top; //創(chuàng)建頭指針 </p><p>  public:}; </p><p>  c).循環(huán)鏈表定義:</p><p>  如下是單向鏈?zhǔn)降慕Y(jié)構(gòu)體包含一個數(shù)域和一個指下的指針域,數(shù)值域

34、。并也對其用類進行封裝,使其更佳。其中含有一個頭指針,用于對其中初始結(jié)點的指向。</p><p>  struct NodeType //鏈表結(jié)點的結(jié)構(gòu)體</p><p>  { int num; //數(shù)值域,存儲猴子編號</p><p>  NodeType *next; }; //指針域,指向下一個猴子結(jié)點</p&

35、gt;<p>  class xunh { </p><p><b>  private: </b></p><p>  NodeType *Head; // 將頭指針設(shè)為私有</p><p><b>  public:};</b></p><p><b>  2.

36、3 各功能模塊</b></p><p>  1、數(shù)組方式包含有構(gòu)造函數(shù),析構(gòu)函數(shù),還有進行創(chuàng)建(即錄入操作),與報數(shù)輸出操作。各功能模塊如下:</p><p>  class seq //數(shù)組存儲的類</p><p><b>  {private:</b></p><p><b>  

37、public:</b></p><p>  seq(){} // 數(shù)組存儲的構(gòu)造函數(shù)</p><p>  ~seq(){}; //析構(gòu)函數(shù)</p><p>  void jin(); //輸入存儲操作</p><p>  void chu(); //報數(shù)輸出操作</p><p>

38、;<b>  };</b></p><p>  2、單向鏈表方式包含有構(gòu)造函數(shù),析構(gòu)函數(shù),還有進行創(chuàng)建(即錄入操作),與報數(shù)輸出操作。各功能模塊如下:</p><p>  class danx // 單向鏈表的類</p><p>  { private: </p><p><b>

39、;  public:</b></p><p>  danx( ){ }; //單向鏈表操作的構(gòu)造函數(shù)</p><p>  ~danx(){ }; //析構(gòu)函數(shù)</p><p>  void creat(); //創(chuàng)建鏈表,輸入猴子信息</p><p>  void outs(); //報數(shù)輸出操作</p&

40、gt;<p><b>  };</b></p><p>  3、循環(huán)鏈表方式包含有構(gòu)造函數(shù),析構(gòu)函數(shù),還有進行創(chuàng)建(即錄入操作),與報數(shù)輸出操作。各功能模塊如下:</p><p>  class xunh //循環(huán)鏈表的類 </p><p><b>  { </b><

41、/p><p>  private: </p><p><b>  public:</b></p><p>  xunh( ){ }; //循環(huán)鏈表的構(gòu)造函數(shù)</p><p>  ~xunh(){ }; //析構(gòu)函數(shù)</p><p>  void creat(); //創(chuàng)建循環(huán)鏈表

42、,輸入信息</p><p>  void outs();}; //報數(shù)輸出大王信息</p><p><b>  3 詳細設(shè)計</b></p><p><b>  3.1結(jié)構(gòu)體定義</b></p><p>  1、數(shù)組結(jié)構(gòu)體定義如下:</p><p>  對數(shù)組的大小進行

43、限制在100,并定義一個整型元素。</p><p>  const max=100; //宏定義數(shù)組上線大小為100</p><p>  typedef int ElemType; //定義整型元素類型ElemType</p><p>  2、單向鏈表結(jié)構(gòu)體定義如下:</p><p>  單向鏈表中每個結(jié)點包含一個數(shù)域和一個指

44、下的指針域,定義值域,存儲猴子編號,還定義一個指針域用與連接操作。</p><p>  struct Node //單向鏈表中每個結(jié)點包含一個數(shù)域和一個指下的指針域 </p><p>  {int data; // 定義值域,存儲猴子編號</p><p>  Node *next; }; //定義指針域指向下一個結(jié)點

45、</p><p>  3、循環(huán)鏈表結(jié)構(gòu)體定義如下:</p><p>  struct NodeType //也包含數(shù)值域和一個指針域 </p><p>  { int num; //值域,存儲猴子編號 </p><p>  NodeType *next; }; //指針域指向下一個結(jié)點<

46、/p><p><b>  3.2 初始化</b></p><p>  其數(shù)組中表示頭與尾的指針進行初始化:</p><p>  只要在數(shù)組類的構(gòu)造函數(shù)中將定義的頭與尾初始化到第一個數(shù)。</p><p><b>  class seq</b></p><p><b>  

47、{</b></p><p><b>  private:</b></p><p><b>  public:</b></p><p>  seq(){front=0;rear=0;} //將數(shù)組中頭尾指針初始化指向第一個數(shù)</p><p><b>  };</b&g

48、t;</p><p><b>  3.3 插入操作</b></p><p>  1、如下是對數(shù)組方式功能的操作:</p><p><b>  創(chuàng)建,錄入數(shù)組:</b></p><p>  void seq::jin() //創(chuàng)建操作</p><p><b>  {

49、</b></p><p>  cout<<"\n..........歡迎使用數(shù)組方式選取大王........"<<endl;</p><p>  int m; //猴子的總數(shù)</p><p><b>  do{</b></p><p>  cout<&

50、lt;"\n 請輸入猴子的總數(shù)(<100):";</p><p><b>  cin>>m;</b></p><p>  if(m>100||m<0) //判斷猴子的總數(shù)是否正確,輸出提示</p><p><b>  {</b></p>&l

51、t;p>  cout<<" 數(shù)據(jù)輸入出錯!";</p><p><b>  }</b></p><p>  }while(m>100||m<0); //do{}while語句使得m的值輸入正確</p><p>  for(int i=0;i<m;i++) //將編號存

52、入數(shù)組</p><p><b>  {</b></p><p>  elem[i]=i+1; </p><p><b>  }</b></p><p>  rear=m-1; //將尾指針指向數(shù)組的尾</p><p><b>  }</b><

53、/p><p><b>  報數(shù)輸出結(jié)果:</b></p><p>  void seq::chu() //報數(shù)輸出操作</p><p><b>  {</b></p><p>  int n; //定義出局報的數(shù)</p><p>  cout<<

54、"\n 輸入報數(shù)值n(n>=2):"; </p><p>  cin>>n; //輸入報數(shù)的值</p><p>  cout<<"\n根據(jù)報數(shù)值"<<n<<",開始選猴大王..."<<endl;</p><p>  if(

55、front==rear) //判斷隊列是否為空</p><p>  cout<<" 存儲錯誤!隊列為空!"<<endl;</p><p>  else //當(dāng)數(shù)組存儲不為空時</p><p><b>  {</b></p><

56、;p>  cout<<"\n報數(shù)結(jié)束,最終成為猴子大王的是(編號):";</p><p>  while(front!=rear) //頭尾相等表示報數(shù)結(jié)束</p><p><b>  {</b></p><p>  for(int i=1;i<n;i++) //對出局報數(shù)循環(huán),

57、使報到的猴子出局</p><p><b>  {</b></p><p>  rear=(rear+1)%max; //實現(xiàn)在數(shù)組中循環(huán)存儲,讓尾指向下一個,但不出數(shù)組</p><p>  elem[rear]=elem[front]; //實現(xiàn)讓隊頭報數(shù)后的猴子接在隊尾</p><p>  front

58、=(front+1)%max; //在循環(huán)中頭指針不出數(shù)組</p><p><b>  }</b></p><p>  front=front+1; //正好報到數(shù)的猴子出隊</p><p><b>  }</b></p><p>  cout<<elem[front]

59、; //選擇猴王結(jié)束,輸出猴王編號</p><p><b>  }</b></p><p>  cout<<endl;</p><p><b>  }</b></p><p>  2、如下是對單向鏈表方式功能的操作:</p><p>  void dan

60、x::creat() //創(chuàng)建操作</p><p><b>  { </b></p><p>  cout<<"\n..........歡迎使用單向鏈表方式選取大王........"<<endl;</p><p>  int i=0, m; //猴子總數(shù)m</p><

61、;p>  Node *newp, *pre; //新聲明兩結(jié)點,創(chuàng)建時pre作為尾結(jié)點</p><p>  cout<<"\n 請輸入猴子的總數(shù): "; </p><p><b>  cin>>m;</b></p><p>  for(i=0;i<m;i++)

62、 //用循環(huán)方式創(chuàng)建鏈表 </p><p><b>  { </b></p><p>  newp=new Node; //對newp初始化</p><p>  newp->next=NULL; </p><p>  newp->data=i+1;

63、 </p><p>  if(i==0) //如果鏈表中還沒有數(shù)據(jù)存入,將存入第一個數(shù)據(jù)</p><p><b>  {</b></p><p>  top=newp; //及將其在頭結(jié)點</p><p>  pre= top; </p><p><b>  }</b>

64、;</p><p><b>  else</b></p><p><b>  {</b></p><p>  pre->next=newp; //如果頭結(jié)點有元素,就存在為結(jié)點的下一個</p><p>  pre=newp; //將尾結(jié)點指向下一個</p><p&g

65、t;<b>  }</b></p><p>  } </p><p><b>  } </b></p><p>  void danx::outs( ) //單向鏈表的輸出操作</p><p><b>  { </b></

66、p><p>  int n,i; //n為報數(shù)值,i為局部循環(huán)數(shù)值</p><p>  Node *q=top;</p><p>  while(q->next!=NULL) //將p指針指向連尾</p><p><b>  {</b></p><p>  q=q->next;

67、 //如果q還不是尾結(jié)點,就下移</p><p><b>  }</b></p><p>  cout<<"\n 輸入報數(shù)值n(n>=2):"; </p><p><b>  cin>>n;</b></p><p>  cout

68、<<"\n根據(jù)報數(shù)值"<<n<<",開始選猴大王..."<<endl;</p><p>  cout<<"\n報數(shù)結(jié)束,最終成為猴子大王的是(編號):";</p><p>  while(top->next!=NULL) //當(dāng)頭結(jié)點的下一個為空時,表示報數(shù)結(jié)

69、束</p><p><b>  {</b></p><p>  Node *p; //創(chuàng)建一個指針,進行報數(shù)操作</p><p>  for(i=1;i<n;i++) //循環(huán)方式將報完數(shù)的猴子接到連尾</p><p><b>  {</b></p><p>

70、  p=top; //p指向頭結(jié)點</p><p>  top=top->next; //報數(shù)時將頭指針下移</p><p>  p->next=NULL; //令p的指針域指空</p><p>  q->next=p; //將p連接到連表尾</p><p>  q=p; //q下移</

71、p><p><b>  }</b></p><p><b>  p=top;</b></p><p>  top=top->next; //top頭指針下移</p><p>  delete p; //刪除報到指定數(shù)的結(jié)點</p><p><b> 

72、 }</b></p><p>  cout<<top->data<<endl; //輸出當(dāng)選猴大王猴子的編號</p><p><b>  } </b></p><p>  3、如下是對循環(huán)鏈表方式功能的操作:</p><p>  void xunh::creat()

73、 //創(chuàng)建操作</p><p><b>  { </b></p><p>  cout<<"\n...........歡迎使用循環(huán)鏈表方式選取大王........."<<endl;</p><p>  int i=0, m; //猴子總數(shù)m</p><p>

74、  NodeType *newp, *pre; //新聲明兩結(jié)點,創(chuàng)建時pre作為尾結(jié)點</p><p>  cout<<"\n 請輸入猴子的總數(shù): "; </p><p>  cin>>m; //輸入猴子總數(shù)</p><p>  for(i=0;i<m;i++) //創(chuàng)

75、建循環(huán)鏈表</p><p><b>  { </b></p><p>  newp=new NodeType; </p><p>  newp->next=NULL;</p><p>  newp->num=i+1; </p><p>  if(i==0) //如果鏈表中

76、還沒有數(shù)據(jù)存入,將存入第一個數(shù)據(jù)</p><p><b>  {</b></p><p>  Head=newp;</p><p>  pre= Head;</p><p><b>  }</b></p><p>  else //如果頭結(jié)點有元素,就存在為結(jié)點

77、的下一個</p><p><b>  {</b></p><p>  newp->next=Head; //將尾與頭連接構(gòu)成循環(huán)</p><p>  pre->next=newp;</p><p>  pre=newp; </p><p><b>  }</b&g

78、t;</p><p>  } </p><p><b>  } </b></p><p>  void xunh::outs( ) //循環(huán)鏈表的輸出操作 </p><p><b>  { </b></p><p>  in

79、t n,i; //猴子總數(shù)m,局部數(shù)值i</p><p>  NodeType *q=Head, *p; //新建結(jié)點q并指向頭</p><p>  cout<<"\n 輸入報數(shù)值n(n>=2):"; </p><p>  cin>>n; //輸入要報的數(shù)</p><p>

80、  cout<<"\n根據(jù)報數(shù)值"<<n<<",開始選猴大王..."<<endl;</p><p>  cout<<"\n報數(shù)結(jié)束,最終成為猴子大王的是(編號):";</p><p>  while(q->next!=q) //判斷:當(dāng)qd的下一個為空時,

81、則報數(shù)結(jié)束</p><p><b>  {</b></p><p>  for(i=1;i<n;i++)</p><p><b>  {</b></p><p>  p=q; q=q->next; //在循環(huán)中將不對未報到出局數(shù)的結(jié)點操作,進行下一個報數(shù)</p><

82、;p>  } </p><p>  p->next=q->next; //將報到出局數(shù)的結(jié)點取出</p><p>  delete q; //刪除報到數(shù)的結(jié)點</p><p>  q=p->next; //將斷點連接</p><p><b>  }&l

83、t;/b></p><p>  cout<<q->num<<endl; //輸出最后結(jié)點信息,為當(dāng)選猴王</p><p>  delete q; //刪除結(jié)點</p><p><b>  } </b></p><p>  4、如下是主函數(shù)的實現(xiàn)調(diào)用操作:</p>

84、<p>  在主函數(shù)中使用switch…case語句將上述三個功能進行界面處理顯示,并對用戶人性化設(shè)計,并創(chuàng)建三個相應(yīng)類的對象,在switch…case語句中,能根據(jù)用戶的選項作出相應(yīng)的函數(shù)調(diào)用。體如下:</p><p>  int main()</p><p><b>  { </b></p><p>  int k; //在

85、switch語句中用到的選擇值</p><p>  seq s; //創(chuàng)建數(shù)組方式的對象</p><p>  danx f; //創(chuàng)建單向鏈表的對象</p><p>  xunh d; //創(chuàng)建循環(huán)方式的對象</p><p>  cout<<"\n.............歡迎進入猴子選大王系統(tǒng).......

86、...."<<endl;</p><p>  cout<<"\n************************************************ ";</p><p>  do //對用戶界面進行美化 ,并提供相關(guān)的選項供用戶選擇</p><p><b>  {</b>

87、;</p><p>  cout<<"\n\n| 1.使用數(shù)組方式選取大王 |";</p><p>  cout<<"\n\n| 2.使用單向鏈表方式選取大王 |";</p><p>  cout<<"

88、\n\n| 3.使用循環(huán)鏈表方式選取大王 |";</p><p>  cout<<"\n\n| 4.結(jié)束程序 |";</p><p>  cout<<"\n**********************************

89、**************";</p><p>  cout<<"\n 請輸入你的選擇(1,2,3,4): "; </p><p>  cin>>k; //用戶輸入選擇</p><p><b>  switch(k)</b></p><p>&

90、lt;b>  {</b></p><p>  case 1: //選擇1就調(diào)用數(shù)組類的方式</p><p><b>  {</b></p><p>  s.jin(); //創(chuàng)建</p><p>  s.chu(); //報數(shù),輸出</p><p>

91、;  cout<<endl;</p><p>  cout<<endl;</p><p><b>  }break;</b></p><p>  case 2://選擇2就調(diào)用單向鏈表的操作</p><p><b>  {</b></p><p>

92、  f.creat(); //創(chuàng)建</p><p>  f.outs(); //報數(shù),輸出</p><p>  cout<<endl;</p><p>  cout<<endl;</p><p><b>  }break;</b></p><p>  ca

93、se 3: //選擇3就調(diào)用循環(huán)方式的操作</p><p><b>  { </b></p><p>  d.creat(); //創(chuàng)建</p><p>  d.outs(); //報數(shù),輸出</p><p>  cout<<endl;</p><p>  cout

94、<<endl;</p><p><b>  }break;</b></p><p>  default:break; //其他就結(jié)束} </p><p>  cout<<"\n************************************************ ";</p>

95、<p>  }while(k>=1&&k<4);</p><p>  cout<<"\n 再見!";</p><p>  cout<<"\n 按任意鍵,返回。"<<endl;</p><p>  return 0;}</

96、p><p><b>  4 調(diào)試分析</b></p><p>  由于此次的課程設(shè)計題目所需要的相關(guān)知識大多數(shù)可在《數(shù)據(jù)結(jié)構(gòu)》書中找到,或借鑒。所以在完成代碼后運行時,沒出現(xiàn)嚴重錯誤和問題。只是有點小問題,即局部變量用錯:沒定義的也用了。調(diào)試并找出錯誤,進行修改。最后獲得成功。</p><p><b>  5 用戶使用說明</b&g

97、t;</p><p>  該系統(tǒng)具有簡單、明了、使用等特點,能夠方便、準(zhǔn)確的計算出眾多猴子編號選舉大王的結(jié)果。當(dāng)使用該系統(tǒng)時,系統(tǒng)會給出相關(guān)的提示信息,用戶只需根據(jù)提示信息,即可完成系統(tǒng)提供的所有功能。</p><p><b>  6 測試結(jié)果</b></p><p>  6.1 界面運行結(jié)果</p><p>  系統(tǒng)運

98、行主界面如圖6.1所示:</p><p><b>  圖6.1 主界面</b></p><p>  6.2子功能測試運行結(jié)果: </p><p>  A)數(shù)組方式選取大王, 如圖6.21所示:</p><p>  圖6.2數(shù)組方式選舉大王</p><p>  B) 單向鏈表方式選取大王,如

99、圖6.22:</p><p>  圖6.3 單向選舉大王</p><p>  C) 循環(huán)方式選舉,如圖6.23所示:</p><p>  圖6.4 循環(huán)方式選舉大王</p><p>  6.3 結(jié)束界面(如下圖)</p><p><b>  圖6.5 結(jié)束界面</b></p><

100、;p><b>  結(jié) 論</b></p><p>  在課程設(shè)計中,首先要看清問題,將問題要求理解透徹,在構(gòu)思要如何實現(xiàn),要用到哪些函數(shù),要用什么算法,在課程設(shè)計構(gòu)思中選算法是一個很重要的概念。只有確定用什么算法后才能接下來的工作,將流程圖畫在紙上,再進行代碼的編寫。在程序設(shè)計中編寫代碼只是一個方面,調(diào)試才是關(guān)鍵,它是一個相當(dāng)繁瑣的過程。有許多新的問題需要被解決,但同時它也是個比較重

101、要的過程,在調(diào)試中,你會學(xué)到很多新的東西,從而增加你編程能力和經(jīng)驗。</p><p>  通過本次實習(xí),溫固了數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識,加深了對課內(nèi)所學(xué)的有關(guān)數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲表示、數(shù)據(jù)結(jié)構(gòu)的選擇合應(yīng)用、算法的設(shè)計和時空效率分析等內(nèi)容的理解,進一步熟悉了C++的應(yīng)用與編程環(huán)境,鞏固并提高了分析問題,解決問題的能力。</p><p><b>  致 謝</b></p

102、><p>  在本次課程設(shè)計過程中,首先感謝學(xué)校相關(guān)領(lǐng)導(dǎo)給了我一次提升實力的機會。其次要感謝監(jiān)督我完成該實驗的老師,是她在我需要必要幫助時,申出了援助之手。還要感謝教過我C++語言和數(shù)據(jù)結(jié)構(gòu)的各位老師,是他們的授課,讓我打下了完成該實驗的基礎(chǔ)。最后,感謝身邊的同學(xué)們、朋友們以及網(wǎng)友們,是你們給了我完成該實驗的思路、方法。</p><p><b>  參考文獻 </b>&l

103、t;/p><p> ?。?]楊寶剛.開展企業(yè)管理信息化工作的步驟[J].企業(yè)管理.2002.(11).12~15</p><p>  [2]Islamabad. Software tools for forgery detection[J]. Business line.2001. (5). 29~32 </p><p> ?。?]王立柱.C/C++與數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論