c語言與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  C語言與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告</p><p>  學(xué) 號  </p><p>  姓 名 </p><p>  課程設(shè)計題目 迷宮求解 </p><p>  小組成員

2、 </p><p>  2012 年 12 月</p><p><b>  目 錄</b></p><p>  1 需求分析 </p><p>  1.1 功能與數(shù)據(jù)需求

3、 </p><p>  1.1.1 題目要求的功能 </p><p>  1.1.2 擴展功能 </p><p> 

4、 1.2 界面需求 </p><p>  1.3 開發(fā)環(huán)境與運行需求 </p><p>  2 概要設(shè)計 &

5、lt;/p><p><b>  2.1主要數(shù)據(jù)結(jié)構(gòu)</b></p><p><b>  2.2程序總體結(jié)構(gòu)</b></p><p>  2.3各模塊函數(shù)說明</p><p><b>  3 詳細(xì)設(shè)計</b></p><p>  3.1算法分析與設(shè)計</

6、p><p>  3.2主要程序段設(shè)計</p><p><b>  4 測試</b></p><p><b>  5 使用說明</b></p><p>  5.1應(yīng)用程序功能的詳細(xì)說明</p><p>  5.2應(yīng)用程序運行環(huán)境要求</p><p>  5.

7、5輸入數(shù)據(jù)類型、格式和內(nèi)容限制</p><p><b>  6 總結(jié)提高</b></p><p><b>  6.1課程設(shè)計總結(jié)</b></p><p>  6.2開發(fā)中遇到的問題和解決方法</p><p>  6.3 對自己完成課設(shè)完成情況的評價</p><p>  6.4

8、《C語言與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》課程的意見與建議</p><p><b>  附錄:程序源代碼</b></p><p>  1 需求分析 </p><p>  1.1 功能與數(shù)據(jù)需求

9、 </p><p>  1.1.1 題目要求的功能 以一個m×n的長方形表示迷宮,0和1分別表示迷宮中的通路和障礙。設(shè)計一個程序,對任意設(shè)定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結(jié)論。 測試數(shù)據(jù):迷宮的測試數(shù)據(jù)如下:左上角(1,1)為入口,右下角(9,8)為出口。

10、 </p><p>  1 2 3 4 5 6 7 8</p><p>  1.1.2 擴展功能 </p><p> ?。?)編寫遞歸形式的算法,求得迷宮中所有可能的通路;</p><p> ?。?)以方陣形式輸出迷宮及其通路。</p><p>  1.2 界面需求 </p>

11、<p><b>  輸入行數(shù)和列數(shù)</b></p><p>  輸入每一行中的通路(0,0)和障礙(1,1).</p><p>  輸入入口坐標(biāo)(1,1)和出口坐標(biāo)(m,n).</p><p>  1.3 開發(fā)環(huán)境與運行需求 </p><p>  開發(fā)環(huán)境 Microsoft Visual C++ 6.0

12、</p><p>  最低運行需求 windows xp ;32位系統(tǒng)</p><p>  2 概要設(shè)計 </p><p>  2.1主要數(shù)據(jù)結(jié)構(gòu):</p><p>  typedef struct /*用于存放迷宮的位置和該點信息*/</p><p><b>  {<

13、/b></p><p>  int x,y,d;</p><p>  }Datatype;</p><p>  typedef struct /*該棧用于存儲走過的結(jié)點*/</p><p><b>  {</b></p><p>  Datatype data[MAXSIZE]

14、;</p><p><b>  int top;</b></p><p>  }Sqstack,*PSqstack;</p><p>  typedef struct /*用于存放當(dāng)前結(jié)點可走的四個方向*/</p><p><b>  {</b></p><p>

15、;<b>  int x,y;</b></p><p><b>  }item;</b></p><p><b>  2.2程序總體結(jié)構(gòu)</b></p><p>  2.3各模塊函數(shù)說明</p><p>  PSqstack Init_Sqstack()

16、 /*初始化空棧*/</p><p>  int Push_Sqstack(PSqstack s,Datatype x) /*入棧*/</p><p>  int Pop_Sqstack(PSqstack s,Datatype *x) /*出棧*/</p><p>  void Destroy_Sqstack(PSqstack *s)

17、 /*銷毀棧*/</p><p>  int Mazepath(int maze[][n+2],int x0,int y0) /*求迷宮路徑函數(shù),入口參數(shù): 指向迷宮數(shù)組的指針,開始點(x0,y0)*/</p><p>  Pop_ Sqstack(s,&temp);</p><p>  Push_Sqstack(t,temp);

18、 /*棧t是棧s的逆,因為s保存 的途徑是反的,加t 使輸出的途徑變?yōu)檎?/</p><p><b>  3 詳細(xì)設(shè)計</b></p><p>  3.1算法分析與設(shè)計</p><p>  思路:計算機解迷宮通常用的是“窮舉求解”方法,即從入口出發(fā),順著某一個方向進行探索,若能走通,則繼續(xù)往前進;否則沿著原路退回,換

19、一個方向繼續(xù)探索,直至出口位置,求得一條通路。假如所有可能的通路都探索到而未能到達出口,則所設(shè)定的迷宮沒有通路。</p><p>  實現(xiàn):假設(shè)“當(dāng)前位置”指的是“在收索過程中某一時刻所在圖中某個方 塊位置”,則求迷宮中的一條路徑的算法的基本思想是:若當(dāng)前位置“可通”, 則納入“當(dāng)前路徑”,并繼續(xù)朝“下一位置”探索,即切換“下一位置”為“當(dāng)前位置”,如此重復(fù)直至到達出口;若當(dāng)前位置“不可通”則應(yīng)該順著“來向”

20、退回到“前一通道塊”,然后朝著除“來向”之外的其他方向繼續(xù)探索;若該通道塊的四周4個方塊均“不可通”,則應(yīng)從“當(dāng)前路徑”上刪除該通道塊。所謂“下一位置”指的是“當(dāng)前位置”四周4個方向(東·南·西·北)上相鄰的方塊。假設(shè)以棧S記錄“當(dāng)前路徑”,則棧頂中存放的是“從當(dāng)前路徑上最后一個通道塊”。由此,“納入路徑”的操作即為“當(dāng)前位置入棧”;“從當(dāng)前路徑上刪除前一通道塊”的操作即為“入棧” 。</p>

21、<p>  3.2主要程序段設(shè)計</p><p>  void main() </p><p><b>  {</b></p><p><b>  int i,j;</b></p&

22、gt;<p>  int maze[m+2][n+2];</p><p>  printf("請輸入迷宮矩陣:9*8\n");</p><p>  for(i=0,j=0;i<m+2;i++) /*將迷宮四周賦值為1,即不可走*/</p><p>  maze[i][j]=1;</p>

23、<p>  for(i=0,j=0;j<n+2;j++)</p><p>  maze[i][j]=1;</p><p>  for(i=0,j=n+1;i<m+2;i++)</p><p>  maze[i][j]=1;</p><p>  for(i=m+1,j=0;j<n+2;j++)</p>

24、<p>  maze[i][j]=1;</p><p>  for(i=1;i<m+1;i++) /*給迷宮賦值*/</p><p><b>  {</b></p><p>  for(j=1;j<n+1;j++)</p><p>  scanf(&quo

25、t;%d",&maze[i][j]);</p><p><b>  }</b></p><p>  for(i=0;i<m+2;i++) /*打印迷宮*/</p><p><b>  {</b></p><p>  for(j=0;j&

26、lt;n+2;j++)</p><p><b>  {</b></p><p>  if(maze[i][j]==0)</p><p>  printf(" ");</p><p><b>  else</b></p><p>  printf("

27、;#");</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p>  Mazepath(maze,1,1);</p><p><b>  }<

28、;/b></p><p><b>  主函數(shù)設(shè)計</b></p><p><b>  main{</b></p><p><b>  定義迷宮數(shù)組;</b></p><p>  將迷宮四周賦值為1,即不可走;</p><p>  按所給格式 輸入迷

29、宮矩陣(m,n),1為路障,0為該位置為通路;</p><p><b>  打印迷宮矩陣;</b></p><p>  調(diào)用Mazepath函數(shù);</p><p><b>  }</b></p><p>  int Mazepath(int maze[][n+2],int x0,int y0)

30、 /*求迷宮路徑函數(shù), 入口參數(shù):指向迷宮數(shù)組的指針,開始點(x0,y0)*/</p><p><b>  {</b></p><p>  PSeqstack s,t;</p><p>  Datatype temp;</p><p>  int x,y,d,i,j;</p><p>  it

31、em move[4];</p><p>  if(maze[1][1]==1||maze[m][n]==1)</p><p>  printf("輸入迷宮數(shù)據(jù)錯誤,起點和終點應(yīng)為:0\n");</p><p><b>  else</b></p><p><b>  {</b>&

32、lt;/p><p>  move[0].x=0;</p><p>  move[0].y=1;</p><p>  move[1].x=1;</p><p>  move[1].y=0;</p><p>  move[2].x=0;</p><p>  move[2].y=-1;</p>

33、<p>  move[3].x=-1;</p><p>  move[3].y=0; /*對move定義為向四個方向探索的數(shù)組*/</p><p>  s=Init_Seqstack(); /*初始化棧s*/</p><p>  t=Init_Seq

34、stack(); /*初始化棧t*/</p><p><b>  if(!s)</b></p><p><b>  {</b></p><p>  printf("棧初始化失敗\n");</p><p>  return (0);&l

35、t;/p><p><b>  }</b></p><p>  temp.x=x0;</p><p>  temp.y=y0;</p><p><b>  temp.d=0;</b></p><p>  Push_Seqstack(s,temp);

36、 /*迷宮入口點入棧*/</p><p>  while(s->top!=-1)</p><p><b>  {</b></p><p>  Pop_Seqstack(s,&temp);</p><p><b>  x=temp.x;</b></p><p>

37、<b>  y=temp.y;</b></p><p>  d=0; /*將方向重新定位為右方,即move[0]*/</p><p>  while(d<4) /*在該點向四個方向嘗試走*/</p><p><b>

38、;  {</b></p><p>  i=x+move[d].x;</p><p>  j=y+move[d].y;</p><p>  if(maze[i][j]==0) /*該路可走*/</p><p><b>  {</b></p><p><

39、b>  temp.x=x;</b></p><p><b>  temp.y=y;</b></p><p><b>  temp.d=d;</b></p><p>  Push_Seqstack(s,temp); /*將可走的路入棧*/</p><p><b>

40、;  x=i;</b></p><p><b>  y=j;</b></p><p>  maze[x][y]=-1; /*將走過的點標(biāo)記為-1*/</p><p>  if(x==m&&y==n) /*判斷走到終點*/</p><p>

41、<b>  {</b></p><p>  printf("該迷宮的走法為:\n");</p><p>  while(s->top!=-1)</p><p><b>  {</b></p><p>  Pop_Seqstack(s,&temp);</p>

42、;<p>  Push_Seqstack(t,temp); /*棧t是棧s的逆,因為s保存的途徑是反的,加t使輸出的途徑變?yōu)檎?/</p><p><b>  }</b></p><p>  Destroy_Seqstack(&s); /*銷毀棧*/</p><p>  while(t->top

43、!=-1) /*打印走過的途徑*/</p><p><b>  {</b></p><p>  Pop_Seqstack(t,&temp);</p><p>  printf("<%d,%d,%d>",temp.x,temp.y,temp.d);</p><p&g

44、t;<b>  }</b></p><p>  printf("<%d,%d>",m,n);</p><p>  Destroy_Seqstack(&t); /*銷毀棧*/</p><p>  return OK;</p><p><b>  }</b

45、></p><p><b>  else</b></p><p>  d=0; /*將方向定位為右方*/</p><p><b>  }</b></p><p><b>  else</b></p><p

46、>  d++; /*嘗試其 他方向是否可走*/</p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("該迷宮無法走出\n&qu

47、ot;);</p><p>  Destroy_Seqstack(&s);</p><p>  return ERROR;</p><p><b>  }</b></p><p><b>  }</b></p><p>  Mazepath函數(shù)</p>

48、<p>  {if(迷宮入口或迷宮是否有通路)</p><p>  Printf(“輸入迷宮數(shù)據(jù)錯誤“);</p><p><b>  else</b></p><p>  {對move定義為向四個方向探索的數(shù)組</p><p><b>  初始化棧s,t;</b></p>

49、<p><b>  迷宮入口點入棧</b></p><p>  While(判斷s是否為空)</p><p>  { 入口參數(shù):指向迷宮數(shù)組的指針,開始點(x0,y0)</p><p>  while(d<4)</p><p><b>  {初始位置</b></p>

50、<p><b>  If(該路口走)</b></p><p><b>  將可走的路入棧</b></p><p>  將走過的點標(biāo)記為-1</p><p>  If( 判斷走到終點)</p><p>  {棧t是棧s的逆,因為s保存的途徑是反的</p><p>  

51、加t使輸出的途徑變?yōu)檎?lt;/p><p><b>  銷毀棧s;</b></p><p><b>  打印走過的途徑;</b></p><p><b>  銷毀棧t;</b></p><p><b>  }</b></p><p>

52、<b>  Else</b></p><p>  將方向定位為右方*/</p><p><b>  }</b></p><p><b>  Else</b></p><p>  嘗試其他方向是否可走*/</p><p><b>  }</

53、b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  4 測試</b></p><p><b>  迷宮路徑測試</b></p><p><b>  迷宮方

54、向測試</b></p><p><b>  無法走出迷宮的測試</b></p><p><b>  完整的迷宮測試</b></p><p><b>  5 使用說明</b></p><p>  5.1應(yīng)用程序功能的詳細(xì)說明</p><p> 

55、 使用者自己設(shè)計一個(9,8)迷宮,迷宮為9行8列的矩陣,1表示該 位置為路障,0表示該位置為通路, 每一行中兩位置之間用空格隔開。進 入下一行設(shè)計按enter鍵。設(shè)計特別要求,矩陣位置(1,1),(9,8)為0, 否則程序不能運行。</p><p>  按enter鍵運行程.</p><p>  5.2應(yīng)用程序運行環(huán)境要求</p><p>  

56、Microsoft Visual C++6.0</p><p>  5.5輸入數(shù)據(jù)類型、格式和內(nèi)容限制</p><p>  輸入的數(shù)據(jù)都是整型(int),輸入迷宮的數(shù)據(jù)間要用空格或回車隔開</p><p><b>  6 總結(jié)提高</b></p><p><b>  6.1課程設(shè)計總結(jié)</b><

57、;/p><p>  這次的實驗,我們發(fā)現(xiàn)書本上理論性的東西與在實際運用中的還是有一定的出入的,所以有些問題不但要深入地理解,而且要不斷地更正以前的錯誤思維,才能完成實驗設(shè)計。通過這次的課程設(shè)計我們也更加理解和掌握了棧和數(shù)組的正確使用方法,更為重要的是了解了通過數(shù)組和結(jié)構(gòu)體結(jié)合來生成的數(shù)據(jù)結(jié)構(gòu)的特點及應(yīng)用,這是在這之前未接觸過的??傊ㄟ^這次的課程設(shè)計,讓我對計算機編程在實際問題中的應(yīng)用有了極大的了解,同時也讓我知道

58、了棧的強大,很多問題都可以用棧來解決。</p><p>  6.2開發(fā)中遇到的問題和解決方法</p><p>  1.(安飛)問題:對循環(huán)結(jié)構(gòu)與數(shù)組結(jié)合對迷宮外墻的的設(shè)計不知道該怎么應(yīng)用。 解決方法:上網(wǎng)查找?guī)讉€迷宮的設(shè)計,以后結(jié)合自己的理解,小組討論后,建了一個二維數(shù)組,定義2個變量,控制變量法,讓迷宮四周為1。</p><p>  2. (洪飛) 問題

59、:對于點向四個方向的走向不清楚,不知道如何判斷該路是否可走,最后如何判斷到達終點以及出棧。</p><p>  解決方法:首先將迷宮口的點入棧,然后將點的坐標(biāo)賦值給x,y,將方向重新定位為右方。用while循環(huán)來判斷四個方向是否可走,用if語句來來判斷該路是否可走,最后將走過的路徑入棧,將走過的點標(biāo)記為-1,同樣用if語句來判斷到達終點,最后出棧。</p><p>  3.(俞杰)問題:剛

60、開始的時候我們只定義了一個棧s=Init_Sqstack();但是在輸出結(jié)果時發(fā)現(xiàn)無法把所有走過的坐標(biāo)輸出來!最后通過討論,知道原來棧是后進先出,所以只能輸出最后一個坐標(biāo)。</p><p>  解決方法:引入另一個棧t=Init_Sqstack();它的作用是:棧t是棧s的逆,因為s保存的途徑是反的,加t 使輸出的途徑變?yōu)檎@樣就可以把所有的坐標(biāo)輸出來。</p><p>  6.3 對自

61、己完成課設(shè)完成情況的評價</p><p>  在這次的課程設(shè)計中,我們小組通過對棧和數(shù)組的運用,終于完成了迷宮求解的編程,在我們剛拿到題目的時候,我們就知道這一次的任務(wù)必須要棧來實現(xiàn),所以我們把棧的內(nèi)容復(fù)習(xí)了一下才開始編的,不過當(dāng)我們把棧的部分編好的時候,才知道后面的似乎更難。在方向的可走上我提出使用類似于二維坐標(biāo)的方式來實現(xiàn),也就是數(shù)組move[ ].x或move[ ].y來實現(xiàn)的。我覺得這種思想好在把數(shù)學(xué)的知

62、識融合在程序里,使的整個程序更容易理解。最后,在我們?nèi)齻€人共同討論、上網(wǎng)查找相關(guān)知識和向其他同學(xué)請教最終解決了遇到的問題,完成了整個設(shè)計。</p><p>  6.4《C語言與數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》課程的意見與建議</p><p>  C語言是數(shù)據(jù)結(jié)構(gòu)這門課的核心,沒有良好的c語言基礎(chǔ),學(xué)習(xí)這門課程是很難的。首先,我們在閱讀數(shù)據(jù)結(jié)構(gòu)的時候,都是用c語言編寫的,這就需要我們把程序看懂;其次,當(dāng)你

63、完成某部分的數(shù)據(jù)結(jié)構(gòu)的知識時,必須要把它完整了,才能在VC++ 6.0上運行,我發(fā)現(xiàn)我們在完成編程后,main函數(shù)部分是我們最容易錯的部分,這和我們c語言的基礎(chǔ)有關(guān)吧。所以我的建議是:</p><p>  希望老師在上課的時候能夠簡單幫我們復(fù)習(xí)回顧一下c語言知識。</p><p>  希望老師能夠在舉例的時候能夠多用幾個完整的程序,這樣可以運行給我們看看,更能夠加深我們對知識的理解。<

64、;/p><p><b>  附錄:程序源代碼</b></p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #define MAXSIZE 100</p><p>  #define ERROR 0

65、</p><p>  #define OK 1</p><p>  #define m 9</p><p>  #define n 8</p><p>  typedef struct /*用于存放迷宮的位置和該點信息*/</p><p><b>  {</b></p>

66、<p>  int x,y,d;</p><p>  }Datatype;</p><p>  typedef struct /*該棧用于存儲走過的結(jié)點*/</p><p><b>  {</b></p><p>  Datatype data[MAXSIZE];</p><

67、p><b>  int top;</b></p><p>  }Sqstack,*PSqstack;</p><p>  typedef struct /*用于存放當(dāng)前結(jié)點可走的四個方向*/</p><p><b>  {</b></p><p><b>  int x

68、,y;</b></p><p><b>  }item;</b></p><p>  PSqstack Init_Sqstack() /*初始化空棧*/</p><p><b>  {</b></p><p>  PSqstack s;</p><p>

69、  s=(PSqstack)malloc(sizeof(Sqstack));</p><p><b>  if(s)</b></p><p>  s->top=-1;</p><p><b>  return s;</b></p><p><b>  }</b></

70、p><p>  int Push_Sqstack(PSqstack s,Datatype x) /*入棧*/</p><p><b>  {</b></p><p>  if(s->top==MAXSIZE-1)</p><p>  return ERROR; /

71、*棧滿不能入棧*/</p><p><b>  else</b></p><p><b>  {</b></p><p><b>  s->top++;</b></p><p>  s->data[s->top]=x;</p><p>

72、  return OK;</p><p><b>  }</b></p><p><b>  }</b></p><p>  int Pop_Sqstack(PSqstack s,Datatype *x) /*出棧*/</p><p><b>  {</b></p&g

73、t;<p><b>  if(!s)</b></p><p>  return ERROR; /*??夭荒艹鰲?/</p><p><b>  else</b></p><p><b>  {</b></p><p&g

74、t;  *x=s->data[s->top];</p><p><b>  s->top--;</b></p><p>  return OK;</p><p><b>  }</b></p><p><b>  }</b></p><p&

75、gt;  void Destroy_Sqstack(PSqstack *s) /*銷毀棧*/</p><p><b>  {</b></p><p><b>  if(*s)</b></p><p><b>  free(*s);</b></p><p><

76、b>  *s=NULL;</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  int Mazepath(int maze[][n+2],int x0,int y0) /*求迷宮路徑函數(shù),入口參數(shù):指向迷宮數(shù)組的指針,開始點(x0,y

77、0)*/</p><p><b>  {</b></p><p>  PSqstack s,t;</p><p>  Datatype temp;</p><p>  int x,y,d,i,j;</p><p>  item move[4];</p><p>  if(m

78、aze[1][1]==1||maze[m][n]==1)</p><p>  printf("輸入迷宮數(shù)據(jù)錯誤,起點和終點應(yīng)為:0\n");</p><p><b>  else</b></p><p><b>  {</b></p><p>  move[0].x=0;<

79、/p><p>  move[0].y=1;</p><p>  move[1].x=1;</p><p>  move[1].y=0;</p><p>  move[2].x=0;</p><p>  move[2].y=-1;</p><p>  move[3].x=-1;</p>

80、<p>  move[3].y=0; /*對move定義為向四個方向探索的數(shù)組*/</p><p>  s=Init_Sqstack(); /*初始化棧s*/</p><p>  t=Init_Sqstack(); /*初始化棧t*

81、/</p><p><b>  if(!s)</b></p><p><b>  {</b></p><p>  printf("棧初始化失敗\n");</p><p>  return (0);</p><p><b>  }</b>

82、;</p><p>  temp.x=x0;</p><p>  temp.y=y0;</p><p><b>  temp.d=0;</b></p><p>  Push_Sqstack(s,temp); /*迷宮入口點入棧*/</p><p>  while

83、(s->top!=-1)</p><p><b>  {</b></p><p>  Pop_Sqstack(s,&temp);</p><p><b>  x=temp.x;</b></p><p><b>  y=temp.y;</b></p>

84、<p>  d=0; /*將方向重新定位為右方,即move[0]*/</p><p>  while(d<4) /*在該點向四個方向嘗試走*/</p><p><b>  {</b></p><p>  i=x+m

85、ove[d].x;</p><p>  j=y+move[d].y;</p><p>  if(maze[i][j]==0) /*該路可走*/</p><p><b>  {</b></p><p><b>  temp.x=x;</b></p><

86、p><b>  temp.y=y;</b></p><p><b>  temp.d=d;</b></p><p>  Push_Sqstack(s,temp); /*將可走的路入棧*/</p><p><b>  x=i;</b></p><p><b

87、>  y=j;</b></p><p>  maze[x][y]=-1; /*將走過的點標(biāo)記為-1*/</p><p>  if(x==m&&y==n) /*判斷走到終點*/</p><p><b>  {</b></p><p>

88、  printf("該迷宮的走法為:\n");</p><p>  while(s->top!=-1)</p><p><b>  {</b></p><p>  Pop_Sqstack(s,&temp);</p><p>  Push_Sqstack(t,temp); /*棧t是

89、棧s的逆,因為s保存的途徑是反的,加t使輸出的途徑變?yōu)檎?/</p><p><b>  }</b></p><p>  Destroy_Sqstack(&s); /*銷毀棧*/</p><p>  while(t->top!=-1) /*打印走過的途徑*/</p><p&

90、gt;<b>  {</b></p><p>  Pop_Sqstack(t,&temp);</p><p>  printf("<%d,%d,%d>",temp.x,temp.y,temp.d);</p><p><b>  }</b></p><p>  

91、printf("<%d,%d>",m,n);</p><p>  Destroy_Sqstack(&t); /*銷毀棧*/</p><p>  return OK;</p><p><b>  }</b></p><p><b>  else</b&g

92、t;</p><p>  d=0; /*將方向定位為右方*/</p><p><b>  }</b></p><p><b>  else</b></p><p>  d++; /*嘗試其他方向是

93、否可走*/</p><p><b>  }</b></p><p><b>  }</b></p><p>  printf("該迷宮無法走出\n");</p><p>  Destroy_Sqstack(&s);</p><p>  return

94、 ERROR;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  int i,j;</b>

95、</p><p>  int maze[m+2][n+2];</p><p>  printf("請輸入迷宮矩陣:9*8\n");</p><p>  for(i=0,j=0;i<m+2;i++) /*將迷宮四周賦值為1,即不可走*/</p><p>  maze[i][j]=1;<

96、;/p><p>  for(i=0,j=0;j<n+2;j++)</p><p>  maze[i][j]=1;</p><p>  for(i=0,j=n+1;i<m+2;i++)</p><p>  maze[i][j]=1;</p><p>  for(i=m+1,j=0;j<n+2;j++)<

97、;/p><p>  maze[i][j]=1;</p><p>  for(i=1;i<m+1;i++) /*給迷宮賦值*/</p><p><b>  {</b></p><p>  for(j=1;j<n+1;j++)</p><p>  sca

98、nf("%d",&maze[i][j]);</p><p><b>  }</b></p><p>  for(i=0;i<m+2;i++) /*打印迷宮*/</p><p><b>  {</b></p><p>  for

99、(j=0;j<n+2;j++)</p><p><b>  {</b></p><p>  if(maze[i][j]==0)</p><p>  printf(" ");</p><p><b>  else</b></p><p>  print

100、f("#");</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p>  Mazepath(maze,1,1);</p><p><b>

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論