- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 试论写作主体性的培养.doc
- 试论大型企业多元化经营战略.doc
- 试论战国时期赵国商业的繁荣.doc
- 试论政府信息公开制度.doc
- 试论朱德国防现代化建设思想.doc
- 试论秦朝的经济立法.doc
- 试论税收政策在促进区域间产业转移中的作用.doc
- 试论英语学习方式的转变.doc
- 试论诱惑.doc
- 试论雷雨中人物形象的塑造.doc
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)