课设迷宫问题.doc

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

******************* 实践教学 ******************* 兰州理工大学 2011年春季学期 数据结构 课程设计 题 目: 迷宫问题 专业班级: 10软件一班 姓 名: 董磊 学 号: 指导教师: 周小健 成 绩: 目录 一 问题描述 1 二 需求分析 2 2.1基本要求 2 2.2迷宫设置 2 2.3输入的形式和输出值的范围 2 2.4输出数据的类型、值域及输出形式 4 2.5 测试数据 4 三 数据类型和系统设计 6 3.1逻辑设计(抽象数据类型的定义和描述) 6 3.1.1 设定抽象数据类型 6 3.1.2功能模块设计 8 3.1.3模块层次调用关系图 9 3.2详细设计 10 3.2.1 抽象数据类型的定义 10 3.2.2功能模块的伪代码算法 13 四 程序调试分析 19 4.1 运行环境(软、硬件环境) 19 4.2 调试过程(遇见的问题及解决方法) 19 4.3 前进方向表move 20 五. 源代码清单和测试结果截图 21 5.1 源代码 21 5.2 测试 25 六. 自我评价与总结 28 参考文献 29 致 谢 30 一 问题描述 以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 二 需求分析 2.1基本要求 首先实现一个以链表作存储结构的栈类型。然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。如:对于下列数据的迷宫,输出的一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。 2.2迷宫设置 以二维数组Maze[m+2][p+2]表示迷宫,其中:Maze[i][0]和Maze[i][p+1](0≤i≤m+1)以及Maze[0][j]和Maze[m+1][j](0≤j≤p+1)设置为1作为一圈障碍。数组中以元素0表示通路,1表示障碍。迷宫的入口位置和出口位置由程序设定,入口位置为(1,1),出口位置为(m,p)。 2.3输入的形式和输出值的范围 int** getMaze(int m,int p) //迷宫定义的具体实现 { int i , j ; int** Maze ; // 声明一个二维指针变量Maze cout 请输入迷宫的大小(行数和列数): ; cin m p ; cout 请输入迷宫内容: endl ; Maze = new int*[m+2] ; //申请长度等于行数+2的二级指针 for(i=0 ; i = m+1 ; i++) { Maze[i] = new int[p+2] ; //申请每个二维指针的空间 } for(i=0 ; i = m+1 ; i++) { Maze[i][0] = Maze[i][p+1] = 1 ; //将第一列和第p+2列置为,作为围墙 } for(j=0 ; j = p+1 ; j++) { Maze[0][j] = Maze[m+1][j] = 1 ; //将第一行和第m+2行置为,作为围墙 } for(i=1 ; i = m ; i++) { for(j=1 ; j= p ; j++) { cin Maze[i][j] ; //输入迷宫数据 } if(i == m) //迷宫数据输入完成 { cout 迷宫创建完毕! endl ; } } return Maze ; //返回二维指针变量Maze } 以二维数组的形式,一行一行的输入迷宫的内容,动态二维数组的实现是由定义二维指针来实现的。迷宫内容的输入以会话方式输入,在输入完毕后会提示用户“迷宫创建完毕!”。程序中将(1,1)设置为迷宫的入口,(m,p)设置为迷宫的出口,并在外围设置一圈障碍都赋值为1。 2.4输出数据的类型、值域及输出形式 cout 迷宫路径为((,1)为入口,( m , p )为出口): endl ; cout 括号内的内容表示(行坐标,列坐标,前进方向) endl ; cout

文档评论(0)

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

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

1亿VIP精品文档

相关文档