資源描述:
《c語言迷宮求解課程設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、目錄1前言12需求分析22.1課程設(shè)計目的22.2課程設(shè)計任務(wù)22.3設(shè)計環(huán)境22.4開發(fā)語言23分析和設(shè)計23.1模塊設(shè)計23.2系統(tǒng)流程圖33.3主要模塊的流程圖74具體代碼實現(xiàn)115課程設(shè)計總結(jié)225.1程序運行結(jié)果225.2課程設(shè)計體會23參考文獻(xiàn)23致謝23161前言本課程設(shè)計是關(guān)于數(shù)據(jù)結(jié)構(gòu)和棧道的基本操作,使用c語言編程,定義合適的數(shù)據(jù)結(jié)構(gòu),對已經(jīng)學(xué)習(xí)的c語言的指針,數(shù)據(jù)結(jié)構(gòu)和棧道加以了解。對于程序設(shè)計課程的運用和學(xué)習(xí)。2需求分析2.1課程設(shè)計目的學(xué)生在教師指導(dǎo)下運用所學(xué)課程的知識來研究、解決一些具有一定綜合性問題的專業(yè)課題。通過
2、課程設(shè)計(論文),提高學(xué)生綜合運用所學(xué)知識來解決實際問題、使用文獻(xiàn)資料、及進(jìn)行科學(xué)實驗或技術(shù)設(shè)計的初步能力,為畢業(yè)設(shè)計(論文)打基礎(chǔ)。2.2課程設(shè)計任務(wù)給出迷宮的入口和出口及相關(guān)的通路,求出從入口到出口的路徑。要求使用C語言編程,定義合適的數(shù)據(jù)結(jié)構(gòu)。最后,需要說明設(shè)計思想,同時給出能夠運行的源程序,并給出對應(yīng)的程序流程圖2.3設(shè)計環(huán)境(1)WINDOWS2000/2003/XP/7/Vista系統(tǒng)(2)VisualC++或TC集成開發(fā)環(huán)境2.4開發(fā)語言C語言3分析和設(shè)計3.1模塊設(shè)計定義SHU、MG結(jié)構(gòu)體類型,產(chǎn)生記憶效果,以及用線性鏈表來進(jìn)
3、行地圖更改。16typedefstructshuju{intdata;intflag;/*判斷這個位置是否被走過,使其產(chǎn)生記憶效果*/}SHU;typedefstructmaze{intc;intflag;intdirect;intx;inty;structmaze*next;}MG;定義pop()函數(shù),用來進(jìn)行入棧操作。定義way()函數(shù),用來尋找迷宮地圖正確的路徑。/*尋找路徑函數(shù)*/163.2系統(tǒng)流程圖開始定義相關(guān)變量以及結(jié)構(gòu)體數(shù)組給5行5列的迷宮賦值為8的矩陣值為8的矩陣輸出原始矩陣迷宮地圖輸出提示用戶輸入0或1輸入25個后迷宮地圖創(chuàng)
4、建完成刷屏輸出用戶創(chuàng)建地圖的迷宮地圖提示用戶輸入入口坐標(biāo)并接收其值提示用戶輸入出口坐標(biāo)并接收其值判斷是否有入口位置,如沒有要求重新輸入直至合法調(diào)用pop函數(shù)進(jìn)行入棧操作調(diào)用way函數(shù)來進(jìn)行路徑判斷輸出圖結(jié)束圖3.1系統(tǒng)流程圖163.3主要模塊的流程圖定義相關(guān)變量開辟一個MG結(jié)構(gòu)體內(nèi)存單元并賦其值判斷是否為首次定義MGN圖3.2POP入棧流程圖其剛定義的結(jié)構(gòu)體作為返回值返回刷屏并輸出迷宮地圖MG頭指針next指針指向NULLMG頭指針指向其剛定義的結(jié)構(gòu)體MG結(jié)構(gòu)體的next指針指向頭指針YMG頭指針指向其剛定義的結(jié)構(gòu)體16定義相關(guān)變量并相應(yīng)賦值
5、頭指針不為NULLN頭指針標(biāo)記變量為1YN取出頭指針的兩個坐標(biāo)x,yY判斷x,y是否與出口相等YY判斷頭指針的左方向是否為4N頭指針的左方向的值自減Y判斷數(shù)組下標(biāo)是否超過界限Y123416Y判斷下列的值表示為通且標(biāo)量為0234調(diào)用pop函數(shù)入棧判斷數(shù)組下標(biāo)是否超過界限Y判斷下行的值表示為通且標(biāo)量為0NYYY頭指針的下方向的值自減調(diào)用pop函數(shù)入棧判斷頭指針的下方向是否為316判斷頭指針的左方向是否為2NY頭指針的左方向的值自減判斷數(shù)組下標(biāo)是否超過界限Y判斷下列的值表示為通且標(biāo)量為0Y調(diào)用pop函數(shù)入棧判斷頭指針的上方向是否為1N134Y16頭
6、指針的左方向的值自減判斷數(shù)組下標(biāo)是否超過界限判斷下列的值表示為通且標(biāo)量為0調(diào)用pop函數(shù)入棧給標(biāo)記賦1,地圖標(biāo)量賦0,頭指針指向next并清屏輸出判斷路徑的迷宮地圖返回f的值圖3.2way尋找路徑函數(shù)流程圖164具體代碼實現(xiàn)#include#include#include#include#include#include#include#include#defineM5/*規(guī)定迷宮的行數(shù)*/#de
7、fineN5/*規(guī)定迷宮的列數(shù)*/inti=0;typedefstructshuju{intdata;intflag;/*判斷這個位置是否被走過,使其產(chǎn)生記憶效果*/}SHU;typedefstructmaze{intc;intflag;intdirect;intx;inty;structmaze*next;}MG;MG*top,*p;MG*pop(intbb,intxx,intyy,SHUt[M][N])/*入棧操作*/{inti2,j2;i++;p=(MG*)malloc(sizeof(MG));16p->c=bb;p->flag=1;p
8、->direct=4;p->x=xx;p->y=yy;if(i==1){top=p;top->next=NULL;}else{p->next=top;top=p;}