数据结构课程设计--迷宫问题.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计--迷宫问题

长 沙 学 院 课程设计说明书 题目 迷宫问题 系(部) 计算机科学与技术系 专业(班级) 2012软件工程(服务外包)9班 姓名 高锐 学号 2012022907 指导教师 付细楚 起止日期 2013.12.09 — 2013.12.21 课程设计任务书 课程名称:数据结构与算法 设计题目:迷宫问题 已知技术参数和设计要求: 问题描述:m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。迷宫问题要求求出从入口(1,1)到出口(m,n)的一条通路,或得出没有通路的结论。 基本要求: 首先实现一个以链表作存储结构的栈类型,然后编写一个求迷宫问题的非递归程序,求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标, d表示走到下一坐标的方向。 测试数据: 迷宫用伪随机数产生程序产生。 左上角(1,1)为入口,右下角(m,n)为出口。 选作内容: 1编写递归形式的算法,求得迷宫中的所有可能的通路 2以方阵的形式输出迷宫及其通路迷宫中的所有可能的通路 设计工作量: 40课时 工作计划: 见课表 长沙学院课程设计鉴定表 姓名 高锐 学号 2012022907 专业 软件工程 班级 12软9班 设计题目 迷宫问题 指导教师 付细楚 指导教师意见: 评定等级: 教师签名: 日期: 答辩小组意见: 评定等级:     答辩小组长签名:     日期:     教研室意见: 教研室主任签名: 日期:   系(部)意见: 系主任签名:        日期:      说明 课程设计成绩分“优秀”、“良好”、“中等”、“及格”、“不及格”五类; 摘要 计算机系的课程设计,我设计了一个迷宫系统,利用了链表栈结构来保存所走的宫路径,可以实现寻找迷宫通路的功能,当无法找到出口时,可提示用户不存在。当输入行数和列数(包括外墙)、迷宫内墙单元数、迷宫内墙每个单元的行数和列数就可以自动生成一个迷宫。 关键词:课程设计,数据结构,迷宫,链表栈; 目录 第1章 设计内容与要求 2 1.1设计内容 2 1.2设计要求 2 第2章 需求分析 3 2.1功能需求分析 3 2.2软件功能 3 2.3需求分析用例 4 2.4求迷宫路径的基本思想 4 2.5输入的形式和输入值的范围 4 2.6输出的形式 4 2.7程序所能达到的功能 4 2.8迷宫求解流程图 5 第3章 系统设计 6 3.1界面设计 6 3.2函数设计 6 3.3结构设计 7 3.4算法设计 8 第4章 系统实现 15 4.1输出迷宫的结构 15 4.2迷宫的实现 17 第5章 总结 21 参考文献 22 附录 23 第1章 设计内容与要求 1.1设计内容 设计一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。迷宫问题要求求出从入口(1,1)到出口(m,n)的一条通路,或得出没有通路的结论 。 1.2设计要求 创建一个以链表作存储结构的栈类型,编写一个求迷宫问题的非递归程序,求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标, d表示走到下一坐标的方向。 第2章 需求分析 2.1功能需求分析 求迷宫中从入口到出口的所有路径是一个经典的程序设计问题。由于计算机解迷宫时,通常用的是“穷举求解”的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向在继续探索,直至搜有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,显然需要用一个后进先出的结构来保存从入口到当前位置的路径。因此,在求迷宫通路的算法中应用“栈”也就是自热而然的事了 2.2软件功能 图1.1 系统功能结构图 1、迷宫的建立: 迷宫中存在通路和障碍,为了方便迷宫的创建,可用0表示通路,用1表示障碍,这样迷宫就可以用0、1矩阵来描述。 2、迷宫的存储: 迷宫是一个矩形区域,可以使用二维数组表示迷宫,这样迷宫的每一个位置都可以用其行列号来唯一指定,但是二维数组不能动态定义其大小,我们可以考虑先定义一个较大的二维数组maze[M+2][N+2],然后用它的前m行n列来存放元素,即可得到一个m×n的二维数组,这样(0,0)表示迷宫入口位置,(m-1,n-1)表示迷宫出口位置。 3、迷宫路径的搜索: 首先从迷宫的入口开始,如果该位置就是迷宫出口,则已经找到了一条路径,搜索工作结束。否则搜索其上、下、左、右位置是否是障碍,若不是障碍,就移动到该位置,然后再从该位置开始搜索通往出口的路径;若是障碍就选择另一个相邻的位置,并从它开

文档评论(0)

wnqwwy20 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档