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