迷宫与栈问题课程设计报告.docxVIP

  • 5
  • 0
  • 约1.19万字
  • 约 23页
  • 2023-12-23 发布于江苏
  • 举报

实用文档

一、课程设计题目

迷宫与栈问题

二、课程设计内容(含技术指标)

【问题描述】

以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。

【任务要求】

首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。如,对于下列数据的迷宫,输出一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。

编写递归形式的算法,求得迷宫中所有可能的通路。

以方阵形式输出迷宫及其通路。

【测试数据】

迷宫的测试数据如下:左上角(0,1)为入口,右下角(8,9)为出口。

迷宫与栈问题

摘要

数据结构是研究与数据之间的关系,是互相之间一种或多种特定关系的数据元素的集合,我们称这一关系为数据的逻辑结构。数据结构在计算机的表示(又称映像)称为数据的物理结构,又称存储结构。

本次课程设计是迷宫求解问题,主要是模拟从入口到出口的通路。程序中的数据采取的是“栈”作为数据的逻辑结构,并且使用链式存储结构,即是实现一个以链表作存储结构的栈类型。本课程设计实现了链栈的建立,入栈,出栈,判断栈是否为空的方法,关键的是迷宫通路路径的“穷举求解”和递归求解的方法。

本课程设计重要说明了系统的设计思路、概要设计以及各个功能模块的详细设计和实现方法。

本次程序的开发工具是microsoftvisualstudio2008,编程语言是C语言。

关键词:迷宫求解链栈穷举求解递归求解

目录

摘要……………PAGEVI

1需求分析………1

1.1基本原理分析……………………1

1.2功能要求…………1

2概要设计………2

2.1数据结构及其抽象数据类型的定义……………2

2.1.1栈的抽象数据类型……………2

2.1.2迷宫的抽象数据类型…………2

2.1.3功能模块分解…………………3

3详细设计………4

3.1主函数与各功能模块……………4

3.2迷宫路径模块……………………4

3.2.1算法分析………4

3.2.2流程图…………5

4软件测试………6

4.1调试过程中遇到的问题的解决,以及程序设计思想的实现…6

4.2测试数据…………6

4.3测试结果…………8

4.4结果分析…………10

参考文献·………11

心得体会·………12

教师评语·………13

答辩记录表·……………………14

附录·……………15

1需求分析

1.1基本原理分析

迷宫问题通常是用“穷举求解”方法解决,即从入口出发,顺着某一个方向进行探索,若能走通,则继续往前走;否则沿着原路退回,换一个方向继续探索,直至出口位置,求得一条通路。假如所有可能的通路都探索到而未能到达出口,则所设定的迷宫没有通路。栈是一个后进先出的结构,可以用来保存从入口到当前位置的路径。

定义迷宫类型来存储迷宫数据,通常设定入口点的下标为(1,1),出口点的下标为(n,n)。为处理方便起见,在迷宫的四周加一圈障碍。对于迷宫任何一个位置,均约定东、南、西、北四个方向可通。

1.2功能要求

(1)以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。迷宫的四周有一圈障碍。

(2)程序输出的结果以三元组(i,j,di)的形式输出,其中:(i,j)指示迷宫中的一个坐标,di表示走到下一坐标的方向,di的取值为1、2、3、4分别表示东、南、西、北

(3)程序能够输出一个任意的迷宫从指定入口到出口的所有通路,以及以方阵形式输出迷宫

(4)若设定的迷宫存在通路,则以方阵形式将迷宫及其通路输出到标准输出文件上,其中字符“1”表示障碍,“2”表示路径,“3”表示曾途经该位置但不能到达出口,其余位置用0表示。若设定迷宫不存在通路

文档评论(0)

1亿VIP精品文档

相关文档