数据结构试验报告-迷宫问题.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构试验报告-迷宫问题

实验报告:迷宫问题题目:编写一个求解迷宫通路的程序需求分析:采用二维数组maze[M][N]来表示迷宫,其中:maze[0][j]和maze[M-1][j](0≤j≤N-1)及maze[i][0]和maze[i][N-1](0≤i≤M-1)为添加在迷宫外围的一圈障碍。数据元素值0表示通路,1表示障碍。限定迷宫的大小M≤8,N≤10.本次实验直接在主程序中输入表示迷宫的二维数组。另外,迷宫的入口和出口位置都将在主程序中直接设置。实验中求出的迷宫通路用“-”表示,迷宫的障碍用“#”表示,已走过但未能求出通路的路径用“@”表示。本程序只求出一条成功的通路。本次实验将直接输出构建迷宫的二维数组、初始化的二维数组和求解后的迷宫数组。概要设计:数据结构及其抽象数据类型的定义。(1)栈的抽象数据类型ADT Stack{数据对象:D={ai| ai∈CharSet,i=1,2…n,n=0}数据关系:R1={ai-1, ai | ai-1, ai∈D,i=2,…n}基本操作:InitStack(S)操作结果:构造一个空栈S。DestroyStack(S)初始条件:栈S已存在。操作结果:销毁栈S。ClearStack(S)初始条件:栈S已存在。操作结果:将S清为空栈。StackLength(S)初始条件:栈S已存在。操作结果:返回栈S的长度。StackEmpty(S)初始条件:栈S已存在。操作结果:若S为空栈,则返回TRUE,否则返回FALSE。GetTop(S,e)初始条件:栈S已存在。操作结果:若栈S不空,则以e返回栈顶元素。Push(S, e)初始条件:栈S已存在。操作结果:在栈S的栈顶插入新的栈顶元素e。Pop(S,e)初始条件:栈S已存在。操作结果:删除S的栈顶元素,并以e返回其值。StackTraverse(S,visit())初始条件:栈S已存在。操作结果:从栈底到栈顶依次对S中的每个元素调用函数visit()。} ADT Stack (2)迷宫的抽象数据类型ADT maze{数据对象:D={ai,j| ai,j∈{ ,#,@,*},0=i=m+1,0=j=n+1,m,n=10}数据关系:R={ROW,COL}基本操作:InitMaze(M,a,row,col)初始条件:二维数组a[row+2][col+2]已存在,其中自第1行至第row+1行,每行中自第1列至第col+1列的元素已有值,并且以值0表示通路,以值1表示障碍。操作结果:构成迷宫的字符型数组,以空白字符表示通路,以字符‘#’表示障碍,并在迷宫四周加上一圈障碍。MazePath(M)初始条件:迷宫M已被赋值。操作结果:若迷宫M中存在一条通路,则按以下规定改变迷宫M的状态:以字符’*’表示路径上的位置,字符‘@’表示“死胡同”,否则迷宫的状态不变。PrintMaze(M)初始条件:迷宫M已存在。操作结果:以字符形式输出迷宫。} ADT maze详细设计:程序具体代码为:// MazePath.cpp : 定义控制台应用程序的入口点。//#include stdafx.h#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#include stdio.h#include stdlib.h#include string.h#include conio.htypedef int Status;#define RANGE 20//RANGE为实际分配的空间行列数#define M 8//maze数组的行数 #define N 11// maze数组的列数 typedef struct//表达迷宫元素位置信息的坐标{int r,c;}PosType;typedef struct//m,n为待处理的迷宫的行列数,RANGE为实际分配的空间行列数{int m,n;char arr[RANGE][RANGE];}MazeType;typedef int directiveType;//东西南北方向用1,2,3,4整数对应typedef struct//路径拟用栈来存储,此处定义栈元素中数据域的信息{int step;//存储到达该点时经历的步数PosType seat;//该点位置directiveType di;//从该点位置走向下一位置的方向}ElemType;typedef struct NodeType//路径拟用链栈来存储{ElemType data;struct NodeType *next;}NodeType,*LinkType;typedef struct//对链栈的头指针和元素个数进行封装{Lin

文档评论(0)

jiulama + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档