JAVA迷宫实验实验报告_数据结构迷宫实验代码及完整实验报告

本文介绍了一次数据结构实验,利用JAVA实现非递归方法解决迷宫问题。通过创建栈来存储路径,从起点开始探索,找到从入口到出口的完整路径。当迷宫有路径可通过时,程序会输出标记过的路径;若无路径,则提示错误。实验涉及到栈的入栈、出栈、判断栈空等操作,并讨论了团队成员的分工和实验总结。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gif数据结构迷宫实验代码及完整实验报告

数据结构实验实验三栈和队列的应用计算机科学与技术系 0901 班组 长:辛志鹏 组 员:张发辉、田飞、赵金桃日 期:2011 年 4 月 21 日实验报告2009 级 0901 班 2011 年 4 月 21 日实验类型:综合设计型 实验地点:软件实验室三 组长:辛志鹏(45) 组员:张发辉(36),赵金桃(22),田 飞 (32)一 实验题目栈和队列的应用二 需求分析本程序是利用非递归的方法求出一条走出迷宫的路径,并将路径输出。首先由用户输入一组二维数组来组成迷宫,确认后程序自动运行,1. 当迷宫有完整路径可以通过时,以 0 和 1 所组成的迷宫形式输出,标记所走过的路径结束程序; 2. 当迷宫无路径时,提示输入错误结束程序。 程序执行的命令:1 创建迷宫 ;2 求解迷宫;3 输出迷宫求解;三 概要设计本程序中采用的数据模型,用到的抽象数据类型的定义,程序的主要算法流程及各模块之间的层次调用关系程序基本结构:设定栈的抽象数据类型定义:ADT Stack {数据对象:D={ | ∈CharSet,i=1,2,3,…,n,n=0;}数据关系:R={| , ∈D,i=2,…,n}设置迷宫的抽象类型ADT maze{数据对象:D={ai|ai∈‘ ’, ‘@’,‘#’,‘1’,i=1,2,…,n,n=0}数据关系:R={r,c}r={|ai-1,ai∈D, i=1,2,…,n,}c=|ai-1,ai∈D, i=1,2,…,n,}结构体定义:typedef struct //迷宫中 x 行 y 列的位置{ int x;int y;}PosType;typedef struct //栈类型{ int ord; //通道块在路径上的“序号”PosType seat; //通道块在迷宫中的“坐标位置”int di; //从此通道块走向下一通道块的“方向”}MazeType;typedef struct{ MazeType *base;MazeType *top;int stacksize;}MazeStack;基本函数:Status InitStack(MazeStack if(!S.base)exit(OVERFLOW);S.top = S.base + S.stacksize;S.stacksize += STACKINCREMENT;}*S.top++ = e;return OK;}\\20091001452)出栈操作Status Pop(MazeStack e = *--S.top;return OK;}\\20091001453)判断栈是否为空Status StackEmpty(MazeStack return ERROR;}\\20091001454)迷宫路径求解Status MazePath(PosType start, PosType end)//迷宫路径求解{PosType curpos;MazeStack S;MazeType e;int curstep;InitStack(S);curpos = start; //设定当前位置为入口位置curstep = 1; //探索第一步cout ’。六 使用说明首先由用户输入一组二维数组来组成迷宫,确认后程序自动运行,1、 当迷宫有完整路径可以通过时,以 0 和 1 所组成的迷宫形式输出,标记所走过的路径结束程序; 2、 当迷宫无路径时,提示输入错误结束程序。 程序执行的命令:1 创建迷宫 ;2 求解迷宫;3 输出迷宫求解;七 测试结果八 实验总结1. 本次实验利用了关于栈的相关知识,入栈、出栈、判断栈满、增加存储空间等等,使学习到的知识能够很好的结合利用,在实际的操作中加强熟练程度。 2. 对于没有掌握好的知识,应该及时的参考课本或者网络资源,使知识落实到实处,不留空白。 3. 关于迷宫中行走方向的选择这一块需要重点的练习,函数的运用不够灵活。 九 模块分工2009100145 辛志鹏 入栈、出栈和判断栈是否为空2009100136 张发辉 迷宫路径求解 2009100122 赵金桃 调用函数 2009100132 田 飞 探索下一位置、标记走过和作废的路径附完整代码:#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW -2#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef int Status;typedef struct//迷宫中 x 行 y 列的位置{int x;int y;}PosType;typedef struct//栈类型{int ord; //通道块在路径上的“序号”PosType seat; //通道块在迷宫中的“坐标位置”int di; //从此通道块走向下一通道块的“方向”, //1:东 2:北 3:西 (顺时针)}MazeType;typedef struct{MazeType *base;MazeType *top;int stacksize;}MazeStack;#include using namespace std;Status InitStack(MazeStack Status Push(MazeStack Status Pop(MazeStack Status StackEmpty(MazeStack Status MazePath(PosType start, PosType end);Status Pass(PosType void FootPrint(PosType pos);PosType NextPos(PosType curPos, int void MakePrint(PosType pos);//迷宫地图,0 表示墙壁,1 表示通路, 入口:mazeMap[1][1], 出口 mazeMap[8][8]int mazeMap[10][10] ={ //0,1,2,3,4,5,6,7,8,9{0,0,0,0,0,0,0,0,0,0}, //0{0,1,1,0,1,1,1,0,1,0}, //1{0,1,1,0,1,1,1,0,1,0}, //2{0,1,1,1,1,0,0,1,1,0}, //3{0,1,0,0,0,1,1,1,1,0}, //4{0,1,1,1,0,1,1,1,1,0}, //5{0,1,0,1,1,1,0,1,1,0}, //6{0,1,0,0,0,1,0,0,1,0}, //7{0,0,1,1,1,1,1,1,1,0}, //8{0,0,0,0,0,0,0,0,0,0} //9};int main(){PosType mazeStart, mazeEnd;mazeStart.x = 1;//开始与结束点mazeStart.y = 1;mazeEnd.x = 8;mazeEnd.y = 8;cout = S.stacksize){S.base = (MazeType

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值