c语言用栈解决迷宫问题

1 以一个n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍,设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
2 首先实现一个栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i, j, d)的形式输出,其中,(i, j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。n如:对于下列5 ╳ 4数据的迷宫,→0 0 1 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 →n输出的一条通路为(1,1,1), (1,2,2), (2,2,1), (2,3,2), (3,3,2), (4,3,1), (4,4,1), (4,5,1)。n
3 主程序模块:初始化,接受数据,处理数据,数据结果
栈模块——实现栈抽象数据类型¨初始化,销毁栈,清空栈,判栈空,取栈顶元素,插入新的栈顶元素,删除栈顶元素,从栈底到栈顶依次访问栈中的每个结点。
迷宫模块——实现迷宫抽象数据类型¨初始化迷宫:按照用户输入的row行和col列的二维数组(元素值为0或1)设置迷宫的初值,包括加上边缘一圈的值。¨求解迷宫:求解迷宫中,从入口到出口的一条路径,若存在,则返回true;否则返回false。¨ 输出迷宫通路。

第1个回答  2013-07-11
明摆着图的深度遍历 用堆栈模拟递归追问

我刚学了链栈,现在栈模块已经做好,迷宫已经做好,卡在如何给迷宫加一圈外围了...能不能给点思路~

追答

0表示 通过 1表示障碍

追问

我现在整个程序做出来了 但只能判断单一路径 想请教一下双向栈怎么写?

追答

没有双向堆栈,堆栈只有一个出口,其他的最多是些小技巧,比如把两个堆栈写在一起,
实际上没什么大作用的。
全路径的话继续单一路径的搜索就好了,直到没有路径为止