2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩21頁(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>  數(shù)學(xué)與計(jì)算機(jī)學(xué)院</b></p><p><b>  課程設(shè)計(jì)說(shuō)明書</b></p><p>  課 程 名 稱: 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) </p><p>  課 程 代 碼: </p><p>  題 目:

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

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

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

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

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

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

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

9、p><p>  [5] 胡學(xué)鋼.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版) .高等教育出版社.2004年8月</p><p>  [6] 徐孝凱 等著.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言描述).清華大學(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測(cè)試數(shù)據(jù)6</b></p><p><b>  2 概要設(shè)計(jì)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 詳細(xì)設(shè)計(jì)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 用戶使用說(shuō)明15</p><p><b>  6 測(cè)試結(jié)果16</b></p><p>  6.1 界面運(yùn)行結(jié)果16</p><p>  6.2子功能測(cè)試運(yùn)行結(jié)果:16</p><p>  6.3 結(jié)束界面(如下圖)18</p>

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

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

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

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

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

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

20、、編碼設(shè)計(jì)、系統(tǒng)集成、以及調(diào)試分析,熟練掌握數(shù)據(jù)結(jié)構(gòu)的選擇、設(shè)計(jì)、實(shí)現(xiàn)以及操作方法,為進(jì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ā)展的社會(huì)中不管人類還是猴子都不想看到如此不幸的畫面。故利用計(jì)算機(jī)軟件來(lái)解決血腥的沖突。</p><p>  即將編號(hào)為1,2,……n的一群猴子按照1-n的順序圍坐成一個(gè)圈,所以可以用數(shù)組將其以循環(huán)的方式存儲(chǔ),輸入猴子的總數(shù)m與要報(bào)的數(shù)n,且保證n<m。還用rear表示數(shù)組尾front數(shù)組頭,并進(jìn)行報(bào)數(shù),將未報(bào)到指定數(shù)的猴子加到rear;用鏈表時(shí)可以用指針結(jié)點(diǎn)將一個(gè)猴子作為一個(gè)結(jié)點(diǎn)存

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

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

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

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

26、lt;/p><p><b>  2.1 ADT描述</b></p><p><b>  ADT Node{</b></p><p>  數(shù)據(jù)對(duì)象: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>  輸入編號(hào)猴子信息,進(jìn)入存儲(chǔ)于數(shù)組,鏈表中</p><p>  報(bào)數(shù)開始,報(bào)到出局?jǐn)?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、  如下是三種不同存儲(chǔ)方式的存儲(chǔ)結(jié)構(gòu)概要設(shè)計(jì)</p><p><b>  a).數(shù)組定義:</b></p><p>  如下是對(duì)數(shù)組方式的定義,包含數(shù)組的大小,元素的定義,并用類對(duì)其進(jìn)行封裝。</p><p>  #include <iostream.h>  //命名空間</p><p>  const ma

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

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

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

33、nx //建類進(jìn)行封裝</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)體包含一個(gè)數(shù)域和一個(gè)指下的指針域,數(shù)值域

34、。并也對(duì)其用類進(jìn)行封裝,使其更佳。其中含有一個(gè)頭指針,用于對(duì)其中初始結(jié)點(diǎn)的指向。</p><p>  struct NodeType //鏈表結(jié)點(diǎn)的結(jié)構(gòu)體</p><p>  { int num; //數(shù)值域,存儲(chǔ)猴子編號(hào)</p><p>  NodeType *next; }; //指針域,指向下一個(gè)猴子結(jié)點(diǎn)</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ù),還有進(jìn)行創(chuàng)建(即錄入操作),與報(bào)數(shù)輸出操作。各功能模塊如下:</p><p>  class seq //數(shù)組存儲(chǔ)的類</p><p><b>  {private:</b></p><p><b>  

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

38、;<b>  };</b></p><p>  2、單向鏈表方式包含有構(gòu)造函數(shù),析構(gòu)函數(shù),還有進(jìn)行創(chuàng)建(即錄入操作),與報(bào)數(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(); //報(bào)數(shù)輸出操作</p&

40、gt;<p><b>  };</b></p><p>  3、循環(huán)鏈表方式包含有構(gòu)造函數(shù),析構(gòu)函數(shù),還有進(jìn)行創(chuàng)建(即錄入操作),與報(bào)數(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();}; //報(bào)數(shù)輸出大王信息</p><p><b>  3 詳細(xì)設(shè)計(jì)</b></p><p><b>  3.1結(jié)構(gòu)體定義</b></p><p>  1、數(shù)組結(jié)構(gòu)體定義如下:</p><p>  對(duì)數(shù)組的大小進(jìn)行

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

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

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

46、/p><p><b>  3.2 初始化</b></p><p>  其數(shù)組中表示頭與尾的指針進(jìn)行初始化:</p><p>  只要在數(shù)組類的構(gòu)造函數(shù)中將定義的頭與尾初始化到第一個(gè)數(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ù)組中頭尾指針初始化指向第一個(gè)數(shù)</p><p><b>  };</b&g

48、t;</p><p><b>  3.3 插入操作</b></p><p>  1、如下是對(duì)數(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 請(qǐng)輸入猴子的總數(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ù)輸入出錯(cuò)!";</p><p><b>  }</b></p><p>  }while(m>100||m<0); //do{}while語(yǔ)句使得m的值輸入正確</p><p>  for(int i=0;i<m;i++) //將編號(hào)存

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>  報(bào)數(shù)輸出結(jié)果:</b></p><p>  void seq::chu() //報(bào)數(shù)輸出操作</p><p><b>  {</b></p><p>  int n; //定義出局報(bào)的數(shù)</p><p>  cout<<

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

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

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

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

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

59、; //選擇猴王結(jié)束,輸出猴王編號(hào)</p><p><b>  }</b></p><p>  cout<<endl;</p><p><b>  }</b></p><p>  2、如下是對(duì)單向鏈表方式功能的操作:</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é)點(diǎn),創(chuàng)建時(shí)pre作為尾結(jié)點(diǎn)</p><p>  cout<<"\n 請(qǐng)輸入猴子的總數(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; //對(duì)newp初始化</p><p>  newp->next=NULL; </p><p>  newp->data=i+1;

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

64、;</p><p><b>  else</b></p><p><b>  {</b></p><p>  pre->next=newp; //如果頭結(jié)點(diǎn)有元素,就存在為結(jié)點(diǎn)的下一個(gè)</p><p>  pre=newp; //將尾結(jié)點(diǎn)指向下一個(gè)</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為報(bào)數(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é)點(diǎn),就下移</p><p><b>  }</b></p><p>  cout<<"\n 輸入報(bào)數(shù)值n(n>=2):"; </p><p><b>  cin>>n;</b></p><p>  cout

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

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

70、  p=top; //p指向頭結(jié)點(diǎn)</p><p>  top=top->next; //報(bào)數(shù)時(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; //刪除報(bào)到指定數(shù)的結(jié)點(diǎn)</p><p><b> 

72、 }</b></p><p>  cout<<top->data<<endl; //輸出當(dāng)選猴大王猴子的編號(hào)</p><p><b>  } </b></p><p>  3、如下是對(duì)循環(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é)點(diǎn),創(chuàng)建時(shí)pre作為尾結(jié)點(diǎn)</p><p>  cout<<"\n 請(qǐng)輸入猴子的總數(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ù)存入,將存入第一個(gè)數(shù)據(jù)</p><p><b>  {</b></p><p>  Head=newp;</p><p>  pre= Head;</p><p><b>  }</b></p><p>  else //如果頭結(jié)點(diǎn)有元素,就存在為結(jié)點(diǎn)

77、的下一個(gè)</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é)點(diǎn)q并指向頭</p><p>  cout<<"\n 輸入報(bào)數(shù)值n(n>=2):"; </p><p>  cin>>n; //輸入要報(bào)的數(shù)</p><p>

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

81、則報(bào)數(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)中將不對(duì)未報(bào)到出局?jǐn)?shù)的結(jié)點(diǎn)操作,進(jìn)行下一個(gè)報(bào)數(shù)</p><

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

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

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

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

86、...."<<endl;</p><p>  cout<<"\n************************************************ ";</p><p>  do //對(duì)用戶界面進(jìn)行美化 ,并提供相關(guān)的選項(xiàng)供用戶選擇</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 請(qǐng)輸入你的選擇(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(); //報(bào)數(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(); //報(bào)數(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(); //報(bào)數(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è)計(jì)題目所需要的相關(guān)知識(shí)大多數(shù)可在《數(shù)據(jù)結(jié)構(gòu)》書中找到,或借鑒。所以在完成代碼后運(yùn)行時(shí),沒出現(xiàn)嚴(yán)重錯(cuò)誤和問(wèn)題。只是有點(diǎn)小問(wèn)題,即局部變量用錯(cuò):沒定義的也用了。調(diào)試并找出錯(cuò)誤,進(jìn)行修改。最后獲得成功。</p><p><b>  5 用戶使用說(shuō)明</b&g

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

98、行主界面如圖6.1所示:</p><p><b>  圖6.1 主界面</b></p><p>  6.2子功能測(cè)試運(yùn)行結(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è)計(jì)中,首先要看清問(wèn)題,將問(wèn)題要求理解透徹,在構(gòu)思要如何實(shí)現(xiàn),要用到哪些函數(shù),要用什么算法,在課程設(shè)計(jì)構(gòu)思中選算法是一個(gè)很重要的概念。只有確定用什么算法后才能接下來(lái)的工作,將流程圖畫在紙上,再進(jìn)行代碼的編寫。在程序設(shè)計(jì)中編寫代碼只是一個(gè)方面,調(diào)試才是關(guān)鍵,它是一個(gè)相當(dāng)繁瑣的過(guò)程。有許多新的問(wèn)題需要被解決,但同時(shí)它也是個(gè)比較重

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

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

103、t;/p><p> ?。?]楊寶剛.開展企業(yè)管理信息化工作的步驟[J].企業(yè)管理.2002.(11).12~15</p><p> ?。?]Islamabad. Software tools for forgery detection[J]. Business line.2001. (5). 29~32 </p><p> ?。?]王立柱.C/C++與數(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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論