用栈做的迷宫问题,要代码,急急急

来源:百度知道 编辑:UC知道 时间:2024/05/26 18:34:59

1. 设计栈的抽象数据类型定义:
ADT Stack{
数据对象:D={ai|ai∈CharSet,i=1,2..,n}
数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=2,...,n}
基本操作:(这里仅列举本题中使用的操作)
Creat()
操作结果:构建一个空栈。
Push()
操作结果:在栈顶插入新的元素。
Pop()
操作结果:将栈顶元素弹出。
Empty()
判断栈是否为空
}ADT stack
2. 本程序包含了三个模块
1) 主程序模块:
void main()
{
输入起点,终点;
处理命令;
输出结果;
}
2) 栈模块-----实现栈抽象数据类型
3) 迷宫模块-----找出迷宫中的通路
3.求解迷宫中一条通路的伪码
设定当前位置的初值为入口位置:
do{
若当前位置可通,
则{ 将当前位置插入栈顶; //纳入路径
若该位置是出口,则输出迷宫图,结束; //求得路径存放在栈中
否则切换当前位置的东邻方块为新的当前位置;
}
否则{
若栈不空且栈顶位置尚有其他方向未被探索,
则设定新的当前位置为沿顺时针方向旋转找到的栈顶位置的下一相邻块;
若栈不空但栈顶位置四周均不可通,
则{删去栈顶位置; //后退一步,从路径中删去该通道
若栈不空,则重新测试新的栈顶位置,
直至找到一个可通的相邻块或出栈至栈空;
}
}
}while(栈不空)
(栈空说明没有路径存在)
二. 详细设计
迷宫坐标位置类型
typedef struct maze{
int a;
int b;
int dir;
struct maze *next