資料結構上機報告 迷宮

2021-05-22 20:23:20 字數 1728 閱讀 6805

迷宮求解

小組成員

1.問題提出:

利用棧結構實現迷宮求解問題。

迷宮求解問題如下:

心理學家把乙隻老鼠從乙個無頂蓋的大盒子的入口趕進迷宮,迷宮中設定很多隔壁,對前進方向形成了多處障礙,心理學家在迷宮的唯一出口放置了一塊乳酪,吸引老鼠在迷宮中尋找通路以到達出口,測試演算法的迷宮如下圖所示:

2.問題分析及演算法設計:

1.迷宮中有障礙物的地方設定為1,沒有障礙物的地方設定為0;

2.設起點下標為(1,1),終點下標為(10,8);

3.從起點出發(起點入棧), 棧中存放走過的路徑(座標);

4.每次取棧頂元素,在其上下左右中選乙個能走通的且沒有走過的點入棧;

5.若該點為終點;則結束,輸出路徑;

6.若上下左右都不通或已走過, 則出棧, 棧空, 則走不通。

3.程式設計:

4.使用者手冊:

1. 執行程式;

2. 根據提示,在「請輸入迷宮矩陣,<10*10>:」後輸入迷宮矩陣;

3. 按enter鍵,根據提示,在「請輸入起始點<0~9>:」後輸入起始點;

4. 按enter鍵,根據提示,在「請輸入結束點<0~9>:」後輸入結束點;

5. 按enter鍵,即可得出最短路徑的長度和最短路徑的座標表示;

6. 關閉操作視窗,結束執行。

7. 附圖例:

5.除錯報告:

6.附錄:程式**:

#include

using namespace std;

struct point

;void copy(point &a, point &b)

struct queue

;void append(queue &d, point p)

void delete(queue &d,point&a)

struct stack

;void push(stack &s, point p)

void pop(stack &s)

class maze

;void main()

m.i++;

}cout<<"最短路徑的長度為:"<< m.i-1 < cout<< "最短路徑為:" < while (a.pre>=0)

push(s,m.p0);

while (s.head>0)

}void maze::initp0()

void maze::initpn()

void maze::initm()

}void maze::pdp0pn()

void maze::kz(queue &q,point a)

if (m[a.x +1][a.y] != 1 && a.x+1 <=9)

if (m[a.x ][a.y-1] != 1 &&a.y - 1 >= 0)

if (m[a.x ][a.y+1] != 1 && a.y+1<=9)

}/*1 1 1 1 1 1 1 1 1 1

1 0 0 0 1 1 0 0 1 1

1 0 1 0 0 1 1 0 0 1

1 1 0 0 0 0 0 1 1 1

1 0 0 1 0 0 1 0 0 1

1 0 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1 1 1*/

迷宮資料結構

實驗報告 題目 設計乙個程式,對任意設定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結論。一 需求分析 1.以二維陣列maze n n 表示迷宮,陣列中以元素值0表示通路,1表示障礙,限定迷宮大小n 100。2.第一行的資料為迷宮的行數m和列數n 從第2行到第m 1為迷宮值,同一行兩個數字之...

資料結構迷宮問題

base.h 公用的常量和型別 include include include include 函式結果狀態 define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define overflow 2 t...

資料結構上機實習報告

班號 116112 姓名 李旭 學號 20111003534 實習報告 實習一 線性表及其應用 n n 20 的階乘 問題描述 大數運算 計算n的階乘 n 20 基本要求 1 資料的表示和儲存 1.1 累積運算的中間結果和最終的計算結果的資料型別要求是整型 這是問題本身的要求 1.2 試設計合適的儲...