全球旧事资料 分类


ifxmy
成功到达出口

Temp1xm
Temp1y

Temp1dir0
pPushTemp1
把最后一个位置入栈
Pri
tPathp
输出路径
retur
1
表示成功找到路径


ifpGetPopxqGetPopxpGetPopyqGetPopy
如果没有新位置入栈,则返回到上一个位置
f
pPop
qPop


retur
0
表示查找失败,即迷宫无路经

3.调试分析
(1)为避免输入迷宫时与长宽的不便,故使输入从(11)开始,(m
)结束,将外围置为1;找到路径时,发现输出的是倒的,于是创建了第三个栈,将存储路径转移再输出,就可以正确实现了。
(2)可改进内容:1、实现该问题的可视化界面,用鼠标点击即可一步步走出迷宫。2、可任选一个出口和一个入口,输出路径。
4.用户手册
输入迷宫的长和宽,再从(11)到(m
)依次输入迷宫矩阵,最后输出
5.测试数据及测试结果
测试输入:
00100010
00100010
00001101
01110010
00010000
01000101
01111001
11000100
11000000
测试目的:测试是否能正确输出路径
正确输出:
111↓
211↓
311↓
411↓
512→
522→
531↓
632→
642→
653↑
552→
562→
571↓
671↓
771↓
871↓
f972→980迷宫路径探索成功!实际输出:
当前状态:通过
6.源程序清单
i
cludeiostream
usi
g
amespacestd
classT
定义描述迷宫中当前位置的结构类型

public
i
tx
x代表当前位置的行坐标
i
ty
y代表当前位置的列坐标
i
tdir
0无效1下2右3上4左

fclassLi
kNode
链表结点

frie
dclassStack
public
Tdata
Li
kNode
ext

classStackprivate
Li
kNodetoppublic
StackStackvoidPushTeTPopTGetPopvoidClearboolempty
指向第一个结点的栈顶指针
构造函数,置空栈析构函数
把元素data压入栈中使栈顶元素出栈取出栈顶元素
把栈清空判断栈是否为空,如果为空则返回,否则返回
StackStack
topNULLStackStackvoidStackPushTe
Li
kNodePP
ewLi
kNodePdataeP
exttoptopPTStackPop
TTempLi
kNodePPtoptoptop
extTempPdata
构造函数,置空栈析构函数
把元素x压入栈中
使栈顶元素出栈
fdeletePretur
TempTStackGetPopretur
topdatavoidStackCleartopNULLboolStackemptyiftopNULLretur
1elseretur
0
取出栈顶元素的值把栈清空
判断栈是否为空,如果为空则返回,否则返回
i
tmove4201100110定义当前位置移动的个方向
boolFi
dMazei
tmazei
tmi
t

寻找迷宫maze中从(,)到(m
)的路径
到则返回true否r
好听全球资料 返回顶部