版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
一、
需求分析1、對(duì)于給定的一個(gè)迷宮,給出一個(gè)出口和入口,找一條從入口到出有這樣通路的信息。2、可以用一個(gè)
的長(zhǎng)方陣表示迷宮,0
和
1
分別表示迷宮中的通路和障礙。設(shè)計(jì)一個(gè)程序,對(duì)任意設(shè)定的迷宮,求出一條從入口到出口的通路,或得出沒(méi)有通路的結(jié)論。3、編寫(xiě)一個(gè)求解迷宮的非遞歸程序。求得的通路以三元組(i,j,
表示走到下一坐標(biāo)的方向。對(duì)應(yīng)的矩陣表示,所以程序的輸入包括了矩陣的行數(shù)、列數(shù)、迷宮內(nèi)墻的個(gè)數(shù)、迷宮內(nèi)墻的坐標(biāo)、所求的通路的入口坐標(biāo)、出口坐標(biāo)。
0
和
1
分別代表通道和障礙物,所以只需要隨機(jī)生成0
和
1
然后再給最外圍都賦值為1,就形成了新的迷宮。二、詳細(xì)設(shè)計(jì)1、計(jì)算機(jī)解迷宮通常用的是“窮舉求解“方法,即從人口出發(fā),順著某一個(gè)方向進(jìn)行探索,若能走通,則繼續(xù)往前進(jìn);否則沿著原路退回,換一個(gè)方向繼續(xù)探索,直至出口位置,求得一條通路。假如所有可能的通路都探索到而未能到達(dá)出口,則所設(shè)定的迷宮沒(méi)有通路。點(diǎn)的下標(biāo)為(n,n)。為處理方便起見(jiàn),可在迷宮的四周加一圈障礙。對(duì)于迷宮中任一位置,均可約定有東、南、西、北四個(gè)方向可通。2、如果在某個(gè)位置上四個(gè)方向都走不通的話,就退回到前一個(gè)位沒(méi)有走通,那就說(shuō)明這個(gè)迷宮根本不通。重復(fù)走第二次",它包括"曾經(jīng)走過(guò)而沒(méi)有走通的路"。顯然為了保證在任何位置上都能沿原路退回,需要用一個(gè)"后進(jìn)先出"的結(jié)構(gòu)即棧來(lái)保存從入口到當(dāng)前位置的路徑。并且在走出出口之后,棧中保存的正是一條從入口到出口的路徑。,
,道塊。北)上相鄰的方塊。假設(shè)以棧
S
“ ?!?。5、找通路的程序的關(guān)鍵部分可以表示如下:do{若當(dāng)前位置可通,則{將當(dāng)前位置插入棧頂; //
納入路徑若該位置是出口位置,則算法結(jié)束;//
此時(shí)棧中存放的是一條從入口位置到出口位置的路徑否則切換當(dāng)前位置的東鄰方塊為新的當(dāng)前位置;}否則{若棧不空且棧頂位置尚有其他方向未被探索,則設(shè)定新的當(dāng)前位置為:
沿順時(shí)針?lè)较蛐D(zhuǎn)找到的棧頂位置的下一相鄰塊;若棧不空但棧頂位置的四周均不可通,則{
刪去棧頂位置; //
從路徑中刪去該通道塊若棧不空,則重新測(cè)試新的棧頂位置,直至找到一個(gè)可通的相鄰塊或出棧至???;}}}
while
6、程序中用的數(shù)據(jù)結(jié)構(gòu)解析:①
可以出棧,退回到前一個(gè)位置再繼續(xù)探索通路,棧的定義如下:struct
SqStack{SElemType
*base;
//
在棧構(gòu)造之前和銷(xiāo)毀之后,base
的值為
NULLSElemType
*top;
//
棧頂指針int
stacksize;
//
當(dāng)前已分配的存儲(chǔ)空間,以元素為單位};
//
順序棧②
棧中元素的類(lèi)型結(jié)構(gòu)程序中先定義了一個(gè)表示坐標(biāo)的類(lèi)型結(jié)構(gòu):struct
PosType
//
迷宮坐標(biāo)位置類(lèi)型{int
x;
//
行值int
y;
//
列值};棧中元素的類(lèi)型結(jié)構(gòu)如下:struct
SElemType
//
棧的元素類(lèi)型{int
ord;
//
通道塊在路徑上的"序號(hào)"PosType
seat;
//
通道塊在迷宮中的"坐標(biāo)位置"int
di;
//
從此通道塊走向下一通道塊的"方向"(0~3
表示東~北)};7、主函數(shù)的流程圖
三、
調(diào)試分析1、對(duì)于程序的設(shè)計(jì)由簡(jiǎn)單到復(fù)雜,先設(shè)計(jì)一個(gè)整體的輪廓然后再慢慢的增加程序的功能,這樣能夠有效的減少錯(cuò)誤,功能慢慢的增加,候比較有目的性,提高寫(xiě)程序的效率。2、對(duì)于程序中的錯(cuò)誤,如果遇到說(shuō)變量沒(méi)有定義或者數(shù)據(jù)結(jié)構(gòu)沒(méi)定構(gòu)體之后。
printf
和
scanf
到你想要的結(jié)果。4、寫(xiě)程序時(shí)一定要瞻前顧后,前后一致,包括名稱(chēng)、數(shù)據(jù)類(lèi)型等等。四、用戶(hù)手冊(cè)在使用程序時(shí)嚴(yán)格按照程序給出的提示一步一步來(lái),下面給出程序正常執(zhí)行的步驟:行列數(shù)多兩行兩列。的數(shù)目?!?、程序提示“請(qǐng)依次輸入迷宮內(nèi)墻每個(gè)單元的行數(shù),列數(shù):,此”時(shí)要輸入迷宮中所有墻的坐標(biāo),我們用數(shù)組中的一個(gè)元素來(lái)表示墻。4、在輸入了迷宮所有內(nèi)墻的坐標(biāo)后,程序會(huì)顯示出迷宮的結(jié)構(gòu),”然后程序會(huì)提示“請(qǐng)輸入起點(diǎn)的行數(shù),列數(shù):,此時(shí)需要輸入所求通”路的起點(diǎn)坐標(biāo)。”5、程序提示“請(qǐng)輸入終點(diǎn)的行數(shù),列數(shù):,此時(shí)需要輸入所求通”路的終點(diǎn)的坐標(biāo)。6、終點(diǎn)坐標(biāo)輸入完畢之后,程序會(huì)顯示出兩種運(yùn)行的結(jié)果,一種字表示出了通路在迷宮中是如何走的,此時(shí)迷宮中的-1
表示找通路時(shí)走過(guò)的單元但是通路不通。注意:再輸入內(nèi)墻單元的坐標(biāo)是一定要細(xì)心,不要錯(cuò)輸,也不要漏輸。否則程序會(huì)出錯(cuò)。五、測(cè)試結(jié)果迷宮的測(cè)試數(shù)據(jù)如下:左上角(1,1)為入口,右下角(9,8)為出口。
程序的測(cè)試結(jié)果為: 程序的開(kāi)始界面六、附錄(附有完整的源程序)源程序如下:
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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育心理學(xué)能力檢測(cè)試卷A卷附答案
- 2024年度山西省高校教師資格證之高等教育法規(guī)模考模擬試題(全優(yōu))
- 2024年柔性樹(shù)脂版項(xiàng)目資金籌措計(jì)劃書(shū)代可行性研究報(bào)告
- 2024年全國(guó)注冊(cè)安全工程師安全生產(chǎn)法律知識(shí)考試題庫(kù)(含答案)
- 三年級(jí)數(shù)學(xué)計(jì)算題專(zhuān)項(xiàng)練習(xí)及答案集錦
- 2024年車(chē)輛購(gòu)買(mǎi)協(xié)議模板
- 2024限量啤酒銷(xiāo)售協(xié)議模板
- 2024年度日本商業(yè)協(xié)議模板集錦
- 2024企業(yè)間緊急無(wú)償借款協(xié)議樣本
- 2024年度畢業(yè)生見(jiàn)習(xí)就業(yè)協(xié)議范本
- 中學(xué)生法律知識(shí)競(jìng)賽考試題庫(kù)200題(含各題型)
- 公園保潔服務(wù)投標(biāo)方案
- 食品保質(zhì)期延長(zhǎng)技術(shù)研究
- 初中數(shù)學(xué)試題大全(六十九)尺規(guī)作圖難題
- 2024-2030年中國(guó)索道纜車(chē)市場(chǎng)運(yùn)行狀況與未來(lái)經(jīng)營(yíng)模式分析報(bào)告
- 高一思想政治上冊(cè)2024-2025學(xué)年達(dá)標(biāo)測(cè)試試卷及答案部編版
- SHT+3413-2019+石油化工石油氣管道阻火器選用檢驗(yàn)及驗(yàn)收標(biāo)準(zhǔn)
- 09BJ13-4 鋼制防火門(mén)窗、防火卷簾
- 初二廣東省深圳市道德與法治上冊(cè)期中測(cè)試試題及答案
- 古詩(shī)詞誦讀《江城子-乙卯正月二十日夜記夢(mèng)》公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)統(tǒng)編版高中語(yǔ)文選擇性必修上冊(cè)
- 單身證明書(shū)12篇
評(píng)論
0/150
提交評(píng)論