資料結構課程設計報告迷宮

2022-08-29 02:30:05 字數 1767 閱讀 9567

題目:迷宮問題

姓名:學號:

班級:指導教師:

2023年6月6日

1. 問題描述

輸入任意大小的迷宮資料,用遞迴和非遞迴方法求出一條走出迷宮的路徑,並將路徑輸出。

2. 設計思路

以 0和1分別表示迷宮中的通路和障礙,沒有通路則不顯示。未顯示為得出沒有通路的結論;

走迷宮的方式是乙個乙個的線路去試如果是死路的話就退回去,類似資料結構中棧的先進後出,所以可以用棧這種結構表示迷宮,通過不斷的試驗當試出最後的路線時輸出棧即可,由於它是不斷迴圈的實驗,所以可以採用鏈棧實現迷宮的求解。同時因為迷宮需要不斷重複的試驗,可以看成反覆的呼叫「迷宮「這個函式,這是典型的遞迴問題,所以也可以使用遞迴解決問題。另外由於資料物件是迷宮所以可以用0和1構建不同型別的迷宮更符合實際也更有樂趣。

3. 資料結構設計

前面提到要用到鏈棧和遞迴兩種方式操作;為了更好的以鍊錶作儲存結構的棧,可以用二維陣列儲存迷宮資訊,同時通路以三元組(i,j,d)的形式輸出,其中:(i,j)指示迷宮中的乙個座標,d表示走到下乙個座標的方向。這樣是路徑更加明顯,具體的資料結構為:

define maxsize 100

#define null 0

typedef struct定義迷宮

maze;

typedef struct point鏈棧的每個結點定義

point;

遞迴法像一位手握大權的領導。當他站在迷宮入口處時,他才懶得親自去走,這時這位領導會吩咐他的手下,讓他們分別向著迷宮的各個方向去探索;當遇到岔路口時留乙個人守在這裡,再分出幾股人,朝著每個方向繼續探索;最後總會有乙個人發現出口。發現出口的這個人將出口的位置報告給離他最近的路口處留守的人,再由這個人報告給上乙個路口的人,依次層層上報,最後訊息傳到了領導那裡,於是這位領導就順著這條畫好的通路大搖大擺地通過了迷宮。

所以具體的資料結構為:

#include<>

#include<>

#define maxsize 100

#define null 0

typedef struct定義迷宮

maze;

maze a;

typedef struct point鏈棧的每個結點定義

point;

4.功能函式設計

<1>乙個用於存放迷宮資訊的二維陣列maze

相關操作:

a.二維陣列的初始化maze creat()

b.陣列以指標形式在各個函式中傳遞。

c.可以改變陣列中的行數和列數。

<2>結構體point *next:指向下乙個結點

<3>結構體printmazepath:輸出迷宮路徑。

<4>結構體secret:搜尋迷宮路徑。

5.編碼實現

非遞迴:

#include<>

#include<>

#define maxsize 100

#define null 0

typedef struct

maze;

typedef struct point

point;

maze creat()

return a;

}int found(int x,int y,point *head)

return 0;

}point *secret(maze a

else j++;

}if(j>4)

{if(top!=null)

top=top->next;

if(top==null)return null;

資料結構課程設計報告 迷宮求解問題

課題設計1 迷宮求解 一.需求分析 本程式是利用非遞迴的方法求出一條走出迷宮的路徑,並將路徑輸出。首先由使用者輸入一組二維陣列來組成迷宮,確認後程式自動執行,當迷宮有完整路徑可以通過時,以0和1所組成的迷宮形式輸出,標記所走過的路徑結束程式 當迷宮無路徑時,提示輸入錯誤結束程式。二 概要設計 1.抽...

資料結構課程設計 迷宮 工作日誌

備註 必須與自己的專案緊密結合,按照工作階段和進度真實填寫。每人每週填寫1份,從第10周周一開始,共填寫個6周,每週五統一提交。備註 必須與自己的專案緊密結合,按照工作階段和進度真實填寫。每人每週填寫1份,從第10周周一開始,共填寫個6周,每週五統一提交。備註 必須與自己的專案緊密結合,按照工作階段...

資料結構課程設計報告

交通諮詢系統設計 不用輸入程式語句,也不用那個截圖 不用太著急,報告周五之前給我就行了 列印和壓縮包都要哈!對了,這段文字記得刪掉啊嘿嘿 題目名稱交通諮詢系統設計 院 系 管理學院 課程名稱資料結構課程設計 班級資訊 10 2 學生姓名呂德麗 指導教師李長雲 目錄一 需求分析及選題要求 3 1 問題...