版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
一、
需求分析1、對于給定的一個迷宮,給出一個出口和入口,找一條從入口到出有這樣通路的信息。2、可以用一個
的長方陣表示迷宮,0
和
1
分別表示迷宮中的通路和障礙。設(shè)計一個程序,對任意設(shè)定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結(jié)論。3、編寫一個求解迷宮的非遞歸程序。求得的通路以三元組(i,j,
表示走到下一坐標(biāo)的方向。對應(yīng)的矩陣表示,所以程序的輸入包括了矩陣的行數(shù)、列數(shù)、迷宮內(nèi)墻的個數(shù)、迷宮內(nèi)墻的坐標(biāo)、所求的通路的入口坐標(biāo)、出口坐標(biāo)。
0
和
1
分別代表通道和障礙物,所以只需要隨機(jī)生成0
和
1
然后再給最外圍都賦值為1,就形成了新的迷宮。二、詳細(xì)設(shè)計1、計算機(jī)解迷宮通常用的是“窮舉求解“方法,即從人口出發(fā),順著某一個方向進(jìn)行探索,若能走通,則繼續(xù)往前進(jìn);否則沿著原路退回,換一個方向繼續(xù)探索,直至出口位置,求得一條通路。假如所有可能的通路都探索到而未能到達(dá)出口,則所設(shè)定的迷宮沒有通路。點(diǎn)的下標(biāo)為(n,n)。為處理方便起見,可在迷宮的四周加一圈障礙。對于迷宮中任一位置,均可約定有東、南、西、北四個方向可通。2、如果在某個位置上四個方向都走不通的話,就退回到前一個位沒有走通,那就說明這個迷宮根本不通。重復(fù)走第二次",它包括"曾經(jīng)走過而沒有走通的路"。顯然為了保證在任何位置上都能沿原路退回,需要用一個"后進(jìn)先出"的結(jié)構(gòu)即棧來保存從入口到當(dāng)前位置的路徑。并且在走出出口之后,棧中保存的正是一條從入口到出口的路徑。,
,道塊。北)上相鄰的方塊。假設(shè)以棧
S
“ ?!?。5、找通路的程序的關(guān)鍵部分可以表示如下:do{若當(dāng)前位置可通,則{將當(dāng)前位置插入棧頂; //
納入路徑若該位置是出口位置,則算法結(jié)束;//
此時棧中存放的是一條從入口位置到出口位置的路徑否則切換當(dāng)前位置的東鄰方塊為新的當(dāng)前位置;}否則{若棧不空且棧頂位置尚有其他方向未被探索,則設(shè)定新的當(dāng)前位置為:
沿順時針方向旋轉(zhuǎn)找到的棧頂位置的下一相鄰塊;若棧不空但棧頂位置的四周均不可通,則{
刪去棧頂位置; //
從路徑中刪去該通道塊若棧不空,則重新測試新的棧頂位置,直至找到一個可通的相鄰塊或出棧至棧空;}}}
while
6、程序中用的數(shù)據(jù)結(jié)構(gòu)解析:①
可以出棧,退回到前一個位置再繼續(xù)探索通路,棧的定義如下:struct
SqStack{SElemType
*base;
//
在棧構(gòu)造之前和銷毀之后,base
的值為
NULLSElemType
*top;
//
棧頂指針int
stacksize;
//
當(dāng)前已分配的存儲空間,以元素為單位};
//
順序棧②
棧中元素的類型結(jié)構(gòu)程序中先定義了一個表示坐標(biāo)的類型結(jié)構(gòu):struct
PosType
//
迷宮坐標(biāo)位置類型{int
x;
//
行值int
y;
//
列值};棧中元素的類型結(jié)構(gòu)如下:struct
SElemType
//
棧的元素類型{int
ord;
//
通道塊在路徑上的"序號"PosType
seat;
//
通道塊在迷宮中的"坐標(biāo)位置"int
di;
//
從此通道塊走向下一通道塊的"方向"(0~3
表示東~北)};7、主函數(shù)的流程圖
三、
調(diào)試分析1、對于程序的設(shè)計由簡單到復(fù)雜,先設(shè)計一個整體的輪廓然后再慢慢的增加程序的功能,這樣能夠有效的減少錯誤,功能慢慢的增加,候比較有目的性,提高寫程序的效率。2、對于程序中的錯誤,如果遇到說變量沒有定義或者數(shù)據(jù)結(jié)構(gòu)沒定構(gòu)體之后。
printf
和
scanf
到你想要的結(jié)果。4、寫程序時一定要瞻前顧后,前后一致,包括名稱、數(shù)據(jù)類型等等。四、用戶手冊在使用程序時嚴(yán)格按照程序給出的提示一步一步來,下面給出程序正常執(zhí)行的步驟:行列數(shù)多兩行兩列。的數(shù)目?!?、程序提示“請依次輸入迷宮內(nèi)墻每個單元的行數(shù),列數(shù):,此”時要輸入迷宮中所有墻的坐標(biāo),我們用數(shù)組中的一個元素來表示墻。4、在輸入了迷宮所有內(nèi)墻的坐標(biāo)后,程序會顯示出迷宮的結(jié)構(gòu),”然后程序會提示“請輸入起點(diǎn)的行數(shù),列數(shù):,此時需要輸入所求通”路的起點(diǎn)坐標(biāo)?!?、程序提示“請輸入終點(diǎn)的行數(shù),列數(shù):,此時需要輸入所求通”路的終點(diǎn)的坐標(biāo)。6、終點(diǎn)坐標(biāo)輸入完畢之后,程序會顯示出兩種運(yùn)行的結(jié)果,一種字表示出了通路在迷宮中是如何走的,此時迷宮中的-1
表示找通路時走過的單元但是通路不通。注意:再輸入內(nèi)墻單元的坐標(biāo)是一定要細(xì)心,不要錯輸,也不要漏輸。否則程序會出錯。五、測試結(jié)果迷宮的測試數(shù)據(jù)如下:左上角(1,1)為入口,右下角(9,8)為出口。
程序的測試結(jié)果為: 程序的開始界面六、附錄(附有完整的源程序)源程序如下:
TRUE
FALSE
ERROR
STACKINCREMENT
STACK_INIT_SIZE
//
{
x;
y;};
{
//
//
//};
{
};
S;
MAXLENGTH
//
//
//
{
OK;}
{
//
OK;}
{
ERROR;
FALSE;}
{{
*)
*
}
OK;}
{ //{
OK;}{
ERROR;}}
{}
{//
}
{}
//{
i,j;{{");");}}}
{
i,j;{{{");}
{");}
{");}}}}
{
do{
{
//
e
//
}
{{
{}
{}}}
FALSE;}
{
i,j;
}
{
i,j;
{}{}{{}}:");{}printf("**************************************************************************\n");printf("**************************************************************************\n");}
{{
}}
{
T;{{}{}}}
{
x,y;
i,j;{printf("*****************1.*****************\n");printf("*****************2.*****************
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級上冊數(shù)學(xué)聽評課記錄 《擲一擲》人教版
- 一年級上冊數(shù)學(xué)聽評課記錄-第4單元:第2課時《一起來分類》北師大版
- 豬肉攤位員工合同(2篇)
- 魯人版九年級道德與法治上冊 3.1 我們共同的精神家園 聽課評課記錄
- 粵教版地理七年級上冊5.3《聚落的發(fā)展變化》聽課評課記錄
- 八年級歷史人教版下冊聽課評課記錄:第15課 鋼鐵長城
- 湘教版數(shù)學(xué)七年級上冊4.1《幾何圖形》聽評課記錄
- 蘇科版數(shù)學(xué)七年級下冊《11.2 不等式的解集》聽評課記錄2
- 2022年新課標(biāo)八年級上冊道德與法治《10.2 天下興亡 匹夫有責(zé) 》聽課評課記錄
- 魯教版地理七年級下冊第九章《青藏地區(qū)》單元備課聽課評課記錄
- 三年級上冊數(shù)學(xué)脫式計算大全600題及答案
- 計算機(jī)控制系統(tǒng) 課件 第10章 網(wǎng)絡(luò)化控制系統(tǒng)的分析與設(shè)計
- 魯教版(五四制)七年級數(shù)學(xué)上冊期末考試卷-附帶答案
- 南京大學(xué)儀器分析習(xí)題集
- 空調(diào)維保應(yīng)急預(yù)案
- 小學(xué)六年級數(shù)學(xué)上冊解決問題專項(xiàng)必考題西師大版
- 2023年高考語文全國乙卷作文范文及導(dǎo)寫(解讀+素材+范文)課件版
- 模塊建房施工方案
- 多域聯(lián)合作戰(zhàn)
- 定向鉆出入土點(diǎn)平面布置圖(可編輯)
- 美容美發(fā)場所衛(wèi)生規(guī)范
評論
0/150
提交評論