一.需求分析
本程序是利用非递归的方法求出一条走出迷宫的路径,并将路径输出。首先由用户输入一组二维数组来组成迷宫,确认后程序自动运行,当迷宫有完整路径可以通过时,以0和1所组成的迷宫形式输出,标记所走过的路径结束程序;当迷宫无路径时,提示输入错误结束程序。程序执行的命令:1创建迷宫 ;2求解迷宫;3输出迷宫求解;
二.算法设计
本程序中采用的数据模型,用到的抽象数据类型的定义,程序的主要算法流程及各模块之间的层次调用关系
程序基本结构:
设定栈的抽象数据类型定义:
ADT Stack {
数据对象:D={ai|ai∈CharSet,i=1,2,3,?..,n,n>=0;} 数据关系:R={<ai?1,ai >|ai?1,ai∈D,i=2,?,n}
设置迷宫的抽象类型
ADT maze{
数据对象:D={ai|ai∈‘ ’,‘@’,‘#’,‘1’,i=1,2,?,n,n>=0} 数据关系:R={r,c}
r={<ai-1,ai>|ai-1,ai∈D, i=1,2,?,n,}
c=<ai-1,ai>|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;
…… …… 余下全文