

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告書</p><p> 設(shè)計(jì)題目: 迷宮求解 </p><p> 專業(yè): 班級(jí): </p><p> 學(xué)生姓名: 學(xué)號(hào): </p><p> 指導(dǎo)教師:
2、 </p><p><b> 2012年12月</b></p><p><b> 目錄</b></p><p><b> 摘要II</b></p><p> 第一章 問題描述1</p><p> 第二章 設(shè)計(jì)思路2</p>
3、<p> 第三章 課程設(shè)計(jì)總體方案及分析3</p><p> 第四章 調(diào)試分析10</p><p><b> 總結(jié)12</b></p><p><b> 附錄:III</b></p><p> 1.程序清單III</p><p><
4、;b> 2.文獻(xiàn)VII</b></p><p><b> 摘要</b></p><p> 設(shè)計(jì)一個(gè)簡單程序,來實(shí)現(xiàn)迷宮的求解,首先在設(shè)計(jì)的時(shí)候就想了一下,應(yīng)該運(yùn)用到那些知識(shí),不管是C語言還是數(shù)據(jù)結(jié)構(gòu)的首先我們想到是運(yùn)用到什么相關(guān)知識(shí),設(shè)計(jì)一個(gè)計(jì)算機(jī)程序?qū)θ我庠O(shè)定的矩形迷宮,求出一條從入口到出口的通路,或得出沒有通路的結(jié)論。</p>
5、<p> 首先從迷宮的入口開始,如果該位置就是迷宮出口,則已經(jīng)找到了一條路徑,搜索工作結(jié)束。否則搜索其上、下、左、右位置是否是障礙,若不是障礙,就移動(dòng)到該位置,然后再從該位置開始搜索通往出口的路徑;若是障礙就選擇另一個(gè)相鄰的位置,并從它開始搜索路徑。為防止搜索重復(fù)出現(xiàn),則將已搜索過的位置標(biāo)記為2,同時(shí)保留搜索痕跡,在考慮進(jìn)入下一個(gè)位置搜索之前,將當(dāng)前位置保存在一個(gè)隊(duì)列中,如果所有相鄰的非障礙位置均被搜索過,且未找到通往出
6、口的路徑,則表明不存在從入口到出口的路徑。這實(shí)現(xiàn)的是廣度優(yōu)先遍歷的算法,如果找到路徑,則為最短路徑。</p><p> 本課程我將用源代碼和流程圖來說明和設(shè)計(jì)我的論文。</p><p> 關(guān)鍵字: 迷宮求解 、 數(shù)據(jù)結(jié)構(gòu) 、 C語言</p><p> 第一章 問題描述 </p><p> 迷宮問題是取自心理學(xué)的一個(gè)古典實(shí)驗(yàn)
7、。在該實(shí)驗(yàn)中,把一只老鼠從一個(gè)無頂大盒子的門放入,在盒子中設(shè)置了許多墻,對(duì)行進(jìn)方向形成了多處阻擋。盒子僅有一個(gè)出口,在出口處放置一塊奶酪,吸引老鼠在迷宮中尋找道路以到達(dá)出口。對(duì)同一只老鼠重復(fù)進(jìn)行上述實(shí)驗(yàn),一直到老鼠從入口走到出口,而不走錯(cuò)一步。老鼠經(jīng)過多次試驗(yàn)最終學(xué)會(huì)走通迷宮的路線。設(shè)計(jì)一個(gè)計(jì)算機(jī)程序?qū)θ我庠O(shè)定的矩形迷宮如下圖A所示,求出一條從入口到出口的通路,或得出沒有通路的結(jié)論。
8、60; &
9、#160; 圖A</p><p><b> 第二章 設(shè)計(jì)思路</b></p><p><b> 2.1設(shè)計(jì)要求</b></p><p> 要求設(shè)計(jì)程序輸出如下
10、:</p><p> (1) 建立一個(gè)大小為m×n的任意迷宮(迷宮數(shù)據(jù)可由用戶輸入或由程序自動(dòng)生成),并在屏幕上顯示出來;</p><p> ?。?)找出一條通路的二元組(i,j)數(shù)據(jù)序列,(i,j)表示通路上某一點(diǎn)的坐標(biāo)。</p><p> ?。?)用一種標(biāo)志(如數(shù)字8)在迷宮中標(biāo)出該條通路;</p><p> ?。?)在屏幕上
11、輸出迷宮和通路;</p><p> ?。?)上述功能可用菜單選擇。</p><p> 第三章 課程設(shè)計(jì)總體方案及分析</p><p><b> 3.1 問題分析:</b></p><p><b> 1.迷宮的建立:</b></p><p> 迷宮中存在通路和
12、障礙,為了方便迷宮的創(chuàng)建,可用0表示通路,用1表示障礙,這樣迷宮就可以用0、1矩陣來描述,</p><p><b> 2.迷宮的存儲(chǔ):</b></p><p> 迷宮是一個(gè)矩形區(qū)域,可以使用二維數(shù)組表示迷宮,這樣迷宮的每一個(gè)位置都可以用其行列號(hào)來唯一指定,但是二維數(shù)組不能動(dòng)態(tài)定義其大小,我們可以考慮先定義一個(gè)較大的二維數(shù)組maze[M+2][N+2],然后用它的前
13、m行n列來存放元素,即可得到一個(gè)m×n的二維數(shù)組,這樣(0,0)表示迷宮入口位置,(m-1,n-1)表示迷宮出口位置。</p><p> 注:其中M,N分別表示迷宮最大行、列數(shù),本程序M、N的缺省值為39、39,當(dāng)然,用戶也可根據(jù)需要,調(diào)整其大小。</p><p> 3.迷宮路徑的搜索:</p><p> 首先從迷宮的入口開始,如果該位置就是迷宮出口
14、,則已經(jīng)找到了一條路徑,搜索工作結(jié)束。否則搜索其上、下、左、右位置是否是障礙,若不是障礙,就移動(dòng)到該位置,然后再從該位置開始搜索通往出口的路徑;若是障礙就選擇另一個(gè)相鄰的位置,并從它開始搜索路徑。為防止搜索重復(fù)出現(xiàn),則將已搜索過的位置標(biāo)記為2,同時(shí)保留搜索痕跡,在考慮進(jìn)入下一個(gè)位置搜索之前,將當(dāng)前位置保存在一個(gè)隊(duì)列中,如果所有相鄰的非障礙位置均被搜索過,且未找到通往出口的路徑,則表明不存在從入口到出口的路徑。這實(shí)現(xiàn)的是廣度優(yōu)先遍歷的算法
15、,如果找到路徑,則為最短路徑。</p><p> 以矩陣 0 0 1 0 1 為例,來示范一下</p><p><b> 1 0 0 1 0</b></p><p><b> 1 0 0 0 1</b></p><p><b> 0 0 1 0 0</b></p
16、><p> 首先,將位置(0,0)(序號(hào)0)放入隊(duì)列中,其前節(jié)點(diǎn)為空,從它開始搜索,其標(biāo)記變?yōu)?,由于其只有一個(gè)非障礙位置,所以接下來移動(dòng)到(0,1)(序號(hào)1),其前節(jié)點(diǎn)序號(hào)為0,標(biāo)記變?yōu)?,然后從(0,1)移動(dòng)到(1,1)(序號(hào)2),放入隊(duì)列中,其前節(jié)點(diǎn)序號(hào)為1,(1,1)存在(1,2)(序號(hào)3)、(2,1)(序號(hào)4)兩個(gè)可移動(dòng)位置,其前節(jié)點(diǎn)序號(hào)均為2.對(duì)于每一個(gè)非障礙位置,它的相鄰非障礙節(jié)點(diǎn)均入隊(duì)列,且它們的前
17、節(jié)點(diǎn)序號(hào)均為該位置的序號(hào),所以如果存在路徑,則從出口處節(jié)點(diǎn)的位置,逆序就可以找到其從出口到入口的通路。</p><p><b> 如下表所示:</b></p><p> 0 1 2 3 4 5 6 7 8 9 10</p><p> 由此可
18、以看出,得到最短路徑:(3,4)(3,3)(2,3)(2,2)(1,2)(1,1)(0,1)(0,0)</p><p> 搜索算法流程圖如下所示:</p><p><b> 3.2 概要設(shè)計(jì)</b></p><p> 1.①構(gòu)建一個(gè)二維數(shù)組maze[M+2][N+2]用于存儲(chǔ)迷宮矩陣</p><p> ②自動(dòng)或手
19、動(dòng)生成迷宮,即為二維數(shù)組maze[M+2][N+2]賦值</p><p> ③構(gòu)建一個(gè)隊(duì)列用于存儲(chǔ)迷宮路徑</p><p> ?、芙⒚詫m節(jié)點(diǎn)struct point,用于存儲(chǔ)迷宮中每個(gè)節(jié)點(diǎn)的訪問情況</p><p><b> ?、輰?shí)現(xiàn)搜索算法</b></p><p> ⑥屏幕上顯示操作菜單</p>&
20、lt;p> 2.本程序包含10個(gè)函數(shù):</p><p> (1)主函數(shù) main()</p><p> (2)手動(dòng)生成迷宮函數(shù) shoudong_maze()</p><p> (3)自動(dòng)生成迷宮函數(shù) zidong_maze()</p><p> (4)將迷宮打印成圖形 print_maze()</p><
21、p> (5)打印迷宮路徑 (若存在路徑) result_maze()</p><p> (6)入隊(duì) enqueue()</p><p> (7)出隊(duì) dequeue()</p><p> (8)判斷隊(duì)列是否為空 is_empty()</p><p> (9)訪問節(jié)點(diǎn) visit()</p><p>
22、(10)搜索迷宮路徑 mgpath()</p><p><b> 3.3 詳細(xì)設(shè)計(jì)</b></p><p> 實(shí)現(xiàn)概要設(shè)計(jì)中定義的所有數(shù)據(jù)類型及操作的偽代碼算法</p><p><b> 節(jié)點(diǎn)類型和指針類型</b></p><p> 迷宮矩陣類型:int maze[M+2][N+2];為方便
23、操作使其為全局變量</p><p> 迷宮中節(jié)點(diǎn)類型及隊(duì)列類型:struct point{int row,col,predecessor} que[512]</p><p><b> 迷宮的操作</b></p><p><b> (1)手動(dòng)生成迷宮</b></p><p> void sho
24、udong_maze(int m,int n)</p><p> {定義i,j為循環(huán)變量</p><p><b> for(i<=m)</b></p><p><b> for(j<=n)</b></p><p> 輸入maze[i][j]的值</p><p&
25、gt;<b> }</b></p><p><b> (2)自動(dòng)生成迷宮</b></p><p> void zidong_maze(int m,int n)</p><p> {定義i,j為循環(huán)變量</p><p><b> for(i<=m)</b><
26、/p><p><b> for(j<=n)</b></p><p> maze[i][j]=rand()%2 //由于rand()產(chǎn)生的隨機(jī)數(shù)是從0到RAND_MAX,RAND_MAX是定義在stdlib.h中的,其值至少為32767),要產(chǎn)生從X到Y(jié)的數(shù),只需要這樣寫:k=rand()%(Y-X+1)+X;</p><p><
27、b> }</b></p><p><b> (3)打印迷宮圖形</b></p><p> void print_maze(int m,int n)</p><p> {用i,j循環(huán)變量,將maze[i][j]輸出 □、■}</p><p><b> (4)打印迷宮路徑</b&g
28、t;</p><p> void result_maze(int m,int n)</p><p> {用i,j循環(huán)變量,將maze[i][j]輸出 □、■、☆}</p><p><b> (5)搜索迷宮路徑</b></p><p> ?、倜詫m中隊(duì)列入隊(duì)操作</p><p> void e
29、nqueue(struct point p)</p><p> {將p放入隊(duì)尾,tail++}</p><p> ?、诿詫m中隊(duì)列出隊(duì)操作</p><p> struct point dequeue(struct point p)</p><p> {head++,返回que[head-1]}</p><p>&l
30、t;b> ③判斷隊(duì)列是否為空</b></p><p> int is_empty()</p><p> {返回head==tail的值,當(dāng)隊(duì)列為空時(shí),返回0}</p><p> ?、茉L問迷宮矩陣中節(jié)點(diǎn)</p><p> void visit(int row,int col,int maze[41][41])</
31、p><p> {建立新的隊(duì)列節(jié)點(diǎn)visit_point,將其值分別賦為row,col,head-1,maze[row][col]=2,表示該節(jié)點(diǎn)以被訪問過;調(diào)用enqueue(visit_point),將該節(jié)點(diǎn)入隊(duì)}</p><p><b> ?、萋窂角蠼?lt;/b></p><p> void mgpath(int maze[41][41],in
32、t m,int n)</p><p> {先定義入口節(jié)點(diǎn)為struct point p={0,0,-1},從maze[0][0]開始訪問。如果入口處即為障礙,則此迷宮無解,返回0 ,程序結(jié)束。否則訪問入口節(jié)點(diǎn),將入口節(jié)點(diǎn)標(biāo)記為訪問過maze[p.row][p.col]=2,調(diào)用函數(shù)enqueue(p)將該節(jié)點(diǎn)入隊(duì)。</p><p> 判斷隊(duì)列是否為空,當(dāng)隊(duì)列不為空時(shí),則運(yùn)行以下操作:&
33、lt;/p><p> { 調(diào)用dequeue()函數(shù),將隊(duì)頭元素返回給p,</p><p> 如果p.row==m-1且p.col==n-1,即到達(dá)出口節(jié)點(diǎn),即找到了路徑,結(jié)束</p><p> 如果p.col+1<n且maze[p.row][p.col+1]==0,說明未到迷宮右邊界,且其右方有通路,則visit(p.row,p.col+1,maze),將
34、右邊節(jié)點(diǎn)入隊(duì)標(biāo)記已訪問</p><p> 如果p.row+1<m且maze[p.row+1][p.col]==0,說明未到迷宮下邊界,且其下方有通路,則visit(p.row+1,p.col,maze),將下方節(jié)點(diǎn)入隊(duì)標(biāo)記已訪問</p><p> 如果p.col-1>0且maze[p.row][p.col-1]==0,說明未到迷宮左邊界,且其左方有通路,則visit(p.r
35、ow,p.col-1,maze),將左方節(jié)點(diǎn)入隊(duì)標(biāo)記已訪問</p><p> 如果p.row-1>0且maze[p.row-1][p.col]==0,說明未到迷宮上邊界,且其上方有通路,則visit(p.row,p.col+1,maze),將上方節(jié)點(diǎn)入隊(duì)標(biāo)記已訪問</p><p><b> }</b></p><p> 訪問到出口(
36、找到路徑)即p.row==m-1且p.col==n-1,則逆序?qū)⒙窂綐?biāo)記為3即maze[p.row][p.col]==3;</p><p> while(p.predecessor!=-1)</p><p> {p=queue[p.predecessor]; maze[p.row][p.col]==3;}</p><p> 最后將路徑圖形打印出來。</p
37、><p><b> 3.菜單選擇</b></p><p> while(cycle!=(-1))</p><p> ☆ 手動(dòng)生成迷宮 請(qǐng)按:1</p><p> ☆ 自動(dòng)生成迷宮 請(qǐng)按:2</p><p> ☆ 退出 請(qǐng)按:3</p><p&g
38、t; scanf("%d",&i);</p><p><b> switch(i)</b></p><p> { case 1:請(qǐng)輸入行列數(shù)(如果超出預(yù)設(shè)范圍則提示重新輸入) </p><p> shoudong_maze(m,n);</p><p> print_maze(m,n)
39、;</p><p> mgpath(maze,m,n);</p><p> if(X!=0) result_maze(m,n);</p><p> case 2 :請(qǐng)輸入行列數(shù)(如果超出預(yù)設(shè)范圍則提示重新輸入)</p><p> zidong_maze(m,n);</p><p> print_maze(m,
40、n);</p><p> mgpath(maze,m,n);</p><p> if(X!=0) result_maze(m,n);</p><p> case 3:cycle=(-1); break;</p><p><b> 第四章 調(diào)試分析</b></p><p> 在調(diào)試過程中,
41、首先使用的是棧進(jìn)行存儲(chǔ),但是產(chǎn)生的路徑是多條或不是最短路徑,所以通過算法比較,改用此算法</p><p><b> 4.1測試結(jié)果</b></p><p><b> 2.自動(dòng)生成迷宮</b></p><p><b> 總結(jié)</b></p><p> 通過這段時(shí)間的課程設(shè)
42、計(jì),本人對(duì)計(jì)算機(jī)的應(yīng)用,數(shù)據(jù)結(jié)構(gòu)的作用以及C語言的使用都有了更深的了解。尤其是C語言的進(jìn)步讓我深刻的感受到任何所學(xué)的知識(shí)都需要實(shí)踐,沒有實(shí)踐就無法真正理解這些知識(shí)以及掌握它們,使其成為自己的財(cái)富。在理論學(xué)習(xí)和上機(jī)實(shí)踐的各個(gè)環(huán)節(jié)中,通過自主學(xué)習(xí)和請(qǐng)教老師,我收獲了不少。當(dāng)然也遇到不少的問題,也正是因?yàn)檫@些問題引發(fā)的思考給我?guī)Я耸斋@。從當(dāng)初不喜歡上機(jī)寫程序到現(xiàn)在能主動(dòng)寫程序,從當(dāng)初拿著程序不只如何下手到現(xiàn)在知道如何分析問題,如何用專業(yè)知識(shí)解
43、決實(shí)際問題的轉(zhuǎn)變,我發(fā)現(xiàn)無論是專業(yè)知識(shí)還是動(dòng)手能力,自己都有很大程度的提高。在這段時(shí)間里,我對(duì)for、while等的循環(huán)函數(shù)用法更加熟悉,逐漸形成了較好的編程習(xí)慣。在老師的指導(dǎo)幫助下,同學(xué)們課余時(shí)間的討論中,這些問題都一一得到了解決。在程序的調(diào)試能力上,無形中得到了許多的提高。例如:頭文件的使用,變量和數(shù)組的范圍問題,定義變量時(shí)出現(xiàn)的問題等等。</p><p> 在實(shí)際的上機(jī)操作過程中,不僅是讓我們了解數(shù)據(jù)結(jié)構(gòu)
44、的理論知識(shí),更重要的是培養(yǎng)解決實(shí)際問題的能力,所以相信通過此次實(shí)習(xí)可以提高我們分析設(shè)計(jì)能力和編程能力,為后續(xù)課程的學(xué)習(xí)及實(shí)踐打下良好的基礎(chǔ)。</p><p> 在這次短短的課程實(shí)踐里,我們得到了侯瑞蓮老師的關(guān)心和幫助。她給了我們很多的信息,與我們一起探討問題,詢問我們遇到了哪些問題并耐心給予指導(dǎo)。當(dāng)我們遇到技術(shù)上難以解決的問題時(shí),她就會(huì)指導(dǎo)我們解決問題,她把自己多年來積累的經(jīng)驗(yàn)教授給我們,使我們順利地完成了課程
45、實(shí)踐任務(wù)。時(shí)間過得真快,大學(xué)生活不知不覺就走過了一年,一年的大學(xué)學(xué)習(xí)和課程實(shí)踐階段的提高,使我們本身知識(shí)得到提高的同時(shí),也增強(qiáng)了我們對(duì)未來工作的信心。</p><p><b> 附錄:</b></p><p><b> 1.程序清單</b></p><p> #include"stdlib.h"&
46、lt;/p><p> #include"stdio.h"</p><p> #define N 39</p><p> #define M 39</p><p><b> int X;</b></p><p> int maze[N+2][M+2];</p>
47、<p> struct point{</p><p> int row,col,predecessor;</p><p> }queue[512];</p><p> int head=0,tail=0;</p><p> void shoudong_maze(int m,int n){</p><p
48、><b> int i,j;</b></p><p> printf("\n\n");</p><p> printf("請(qǐng)按行輸入迷宮,0表示通路,1表示障礙:\n\n");</p><p> for(i=0;i<m;i++)</p><p> for(j=
49、0;j<n;j++)</p><p> scanf("%d",&maze[i][j]);</p><p><b> }</b></p><p> void zidong_maze(int m,int n){</p><p><b> int i,j;</b>
50、</p><p> printf("\n迷宮生成中……\n\n");</p><p> system("pause");</p><p> for(i=0;i<m;i++)</p><p> for(j=0;j<n;j++)</p><p> maze[i]
51、[j]=rand()%2;</p><p> //由于rand()產(chǎn)生的隨機(jī)數(shù)是從0到RAND_MAX</p><p> //RAND_MAX是定義在stdlib.h中的,其值至少為32767)</p><p> //要產(chǎn)生從X到Y(jié)的數(shù),只需要這樣寫:k=rand()%(Y-X+1)+X; </p><p><b> }&l
52、t;/b></p><p> void print_maze(int m,int n){</p><p><b> int i,j;</b></p><p> printf("\n迷宮生成結(jié)果如下:\n\n");</p><p> printf("迷宮入口\n");&
53、lt;/p><p> printf("↓");</p><p> for(i=0;i<m;i++)</p><p> {printf("\n");</p><p> for(j=0;j<n;j++) </p><p> {if(maze[i][j]==0) pr
54、intf("□");</p><p> if(maze[i][j]==1) printf("■");}</p><p><b> }</b></p><p> printf("→迷宮出口\n");</p><p><b> }</b>
55、;</p><p> void result_maze(int m,int n){</p><p><b> int i,j;</b></p><p> printf("迷宮通路(用☆表示)如下所示:\n\t");</p><p> for(i=0;i<m;i++)</p>
56、<p> {printf("\n");</p><p> for(j=0;j<n;j++)</p><p> {if(maze[i][j]==0||maze[i][j]==2) printf("□");</p><p> if(maze[i][j]==1) printf("■");
57、</p><p> if(maze[i][j]==3) printf("☆");</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void
58、enqueue(struct point p){</p><p> queue[tail]=p;</p><p><b> tail++;</b></p><p><b> }</b></p><p> struct point dequeue(){</p><p>
59、<b> head++;</b></p><p> return queue[head-1];</p><p><b> }</b></p><p> int is_empty(){</p><p> return head==tail;</p><p><b
60、> }</b></p><p> void visit(int row,int col,int maze[41][41]){</p><p> struct point visit_point={row,col,head-1};</p><p> maze[row][col]=2;</p><p> enqueue
61、(visit_point);</p><p><b> }</b></p><p> int mgpath(int maze[41][41],int m,int n){</p><p><b> X=1;</b></p><p> struct point p={0,0,-1};</p
62、><p> if(maze[p.row][p.col]==1)</p><p> {printf("\n===============================================\n");</p><p> printf("此迷宮無解\n\n");X=0;return 0;}</p><
63、;p> maze[p.row][p.col]=2;</p><p> enqueue(p);</p><p> while(!is_empty())</p><p> {p=dequeue();</p><p> if((p.row==m-1)&&(p.col==n-1)) break;</p>
64、<p> if((p.col+1<n)&&(maze[p.row][p.col+1]==0)) visit(p.row,p.col+1,maze);</p><p> if((p.row+1<m)&&(maze[p.row+1][p.col]==0)) visit(p.row+1,p.col,maze);</p><p> if(
65、(p.col-1>=0)&&(maze[p.row][p.col-1]==0)) visit(p.row,p.col-1,maze);</p><p> if((p.row-1>=0)&&(maze[p.row-1][p.col]==0)) visit(p.row-1,p.col,maze);</p><p><b> }</
66、b></p><p> if(p.row==m-1&&p.col==n-1)</p><p> {printf("\n==================================================================\n");</p><p> printf("迷宮路徑為:\
67、n");</p><p> printf("(%d,%d)\n",p.row,p.col);</p><p> maze[p.row][p.col]=3;</p><p> while(p.predecessor!=-1)</p><p> {p=queue[p.predecessor];</p&g
68、t;<p> printf("(%d,%d)\n",p.row,p.col);</p><p> maze[p.row][p.col]=3;</p><p><b> }</b></p><p><b> }</b></p><p> else {prin
69、tf("\n=============================================================\n");</p><p> printf("此迷宮無解!\n\n");X=0;}</p><p><b> return 0;</b></p><p><b&g
70、t; }</b></p><p> void main()</p><p> {int i,m,n,cycle=0;</p><p> while(cycle!=(-1))</p><p><b> {</b></p><p> printf("*********
71、***********************************************************************\n");</p><p> printf(" 歡迎進(jìn)入迷宮求解系統(tǒng)\n");</p><p> printf("
72、 設(shè)計(jì)者:吳明華 \n");</p><p> printf("********************************************************************************\n");</p><p> prin
73、tf(" ☆ 手動(dòng)生成迷宮 請(qǐng)按:1\n");</p><p> printf(" ☆ 自動(dòng)生成迷宮 請(qǐng)按:2\n");</p><p> printf(" ☆ 退出
74、 請(qǐng)按:3\n\n");</p><p> printf("********************************************************************************\n");</p><p> printf("\n");</p><p> pr
75、intf("請(qǐng)選擇你的操作:\n");</p><p> scanf("%d",&i);</p><p><b> switch(i)</b></p><p> {case 1:printf("\n請(qǐng)輸入行數(shù):");scanf("%d",&m)
76、;</p><p> printf("\n");</p><p> printf("請(qǐng)輸入列數(shù):");scanf("%d",&n);</p><p> while((m<=0||m>39)||(n<=0||n>39))</p><p> {pr
77、intf("\n抱歉,你輸入的行列數(shù)超出預(yù)設(shè)范圍(0-39,0-39),請(qǐng)重新輸入:\n\n");</p><p> printf("請(qǐng)輸入行數(shù):");scanf("%d",&m);</p><p> printf("\n");</p><p> printf("
78、請(qǐng)輸入列數(shù):");scanf("%d",&n);</p><p><b> }</b></p><p> shoudong_maze(m,n);</p><p> print_maze(m,n);</p><p> mgpath(maze,m,n);</p>&
79、lt;p> if(X!=0) result_maze(m,n);</p><p> printf("\n\nPress Enter Contiue!\n");getchar();while(getchar()!='\n');break;</p><p> case 2:printf("\n請(qǐng)輸入行數(shù):");scanf(&q
80、uot;%d",&m);</p><p> printf("\n");</p><p> printf("請(qǐng)輸入列數(shù):");scanf("%d",&n);</p><p> while((m<=0||m>39)||(n<=0||n>39))</p
81、><p> {printf("\n抱歉,你輸入的行列數(shù)超出預(yù)設(shè)范圍(0-39,0-39),請(qǐng)重新輸入:\n\n");</p><p> printf("請(qǐng)輸入行數(shù):");scanf("%d",&m);</p><p> printf("\n");</p><
82、p> printf("請(qǐng)輸入列數(shù):");scanf("%d",&n);</p><p><b> }</b></p><p> zidong_maze(m,n);</p><p> print_maze(m,n);</p><p> mgpath(maze,
83、m,n);</p><p> if(X!=0) result_maze(m,n);</p><p> printf("\n\nPress Enter Contiue!\n");getchar();while(getchar()!='\n');break;</p><p> case 3:cycle=(-1);break;&l
84、t;/p><p> default:printf("\n");printf("你的輸入有誤!\n");</p><p> printf("\nPress Enter Contiue!\n");getchar();while(getchar()!='\n');break;</p><p>&l
85、t;b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 2.文獻(xiàn)</b></p><p> 【1】 嚴(yán)蔚敏 吳偉民 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》 清華大學(xué)出版社, 2009年9月&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 迷宮求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 迷宮求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 迷宮求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 迷宮問題的求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---迷宮求解
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)迷宮求解課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---迷宮問題求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--求解迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)迷宮求解(代碼參數(shù))課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)與算法----迷宮求解課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--迷宮
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-迷宮求解(遞歸與非遞歸)
- 數(shù)據(jù)結(jié)構(gòu)迷宮課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)迷宮課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---迷宮
評(píng)論
0/150
提交評(píng)論