一.需求分析 本程序是利用非递归的方法求出一条走出迷宫的路径,并将路径输出。首 先 由 用户 输入 一组 二 维 数 组 来 组 成 迷宫,确 认 后 程序自 动 运 行 ,当 迷宫有 完 整 路径可 以 通 过 时 ,以 0 和 1 所 组 成 的迷宫形 式 输出,标 记 所 走过 的路径结 束 程序; 当 迷宫无 路径时 ,提 示 输入 错 误 结 束 程序。 程序执 行 的命 令 : 1 创 建 迷宫 ; 2 求解 迷宫; 3 输出迷宫求解 ; 二.算法设计 本程序中 采 用的数 据 模 型 ,用到 的抽 象 数 据 类 型 的定 义 ,程序的主 要 算 法流 程及 各 模 块 之 间 的层 次 调 用关 系 程序基 本结 构 : 设定栈的抽象数据类型定义: ADT Stack { 数据对象:D={ia |ia ∈CharSet,i=1,2,3,…..,n,n>=0;} 数据关系:R={<1ia,ia >|1ia,ia ∈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 &S)//新 建 一 个 栈 Status Push(MazeStack &S, MazeType &e)//入 栈 Status Pop(MazeStack &S, MazeType &e)//出 栈 Status StackEmpty(MazeStack &S)//判 断 是 否 为 空 Status MazePath(PosType start, PosType end)//迷宫路 径 求 解 void FootPrint(PosType pos) PosType NextPos(PosType curPos, int &i) void MakePrint(PosType pos) 三.程序设计 根据算法设计中给出的有关数据和算法,选定物理结构,详细设计需求分析中所要求的程序。包括:人机界面设计、主 要功能 的函 数设计、 函 数之 间 ...