2025年智能路径探索与迷宫问题解决方案研究.docx
《编程实训》试验汇报书
专业:计算机科学与技术班级:1班
学号
姓名:周*
指导教师:周**
日期:6月30日
目录
一、需求分析 3
1.任务规定 3
2.软件功能分析 3
3.数据准备 3
二、概要设计 3
1.功能模块图 4
2.模块间调用关系 4
3.主程序模块 5
4.抽象数据类型描述 5
三、详细设计 6
1.存储构造定义 6
2.各功能模块的详细设计 7
四、实现和调试 7
1.重要的算法 7
2.重要问题及处理 8
3.测试执行及成果 8
五、改善 9
六、附录 9
1
需求分析
1.1任务规定
以一种m*n的长方阵表达迷宫,0和1分别表达迷宫中的通路和障碍。设计一种程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
1.2软件功能分析
设计一种迷宫,通过该程序可以找出通往出口的最短途径。程序功能有三(1)创立迷宫;
(2)求解迷宫;(3)输出迷宫的解。
1.3数据准备
迷宫的测试数据如下:左上角(1,1)为入口,右下角(9,8)为出口。
0
0
1
0
0
0
1
0
0
0
1
0
0
0
1
0
0
0
0
0
1
1
0
1
0
1
1
1
0
0
1
0
0
0
0
1
0
0
0
0
0
1
0
0
0
1
0
1
0
1
1
1
1
0
0
1
1
1
0
0
0
1
0
1
1
1
0
0
0
0
0
0
障碍物坐标:
13
17
23
27
35
36
38
42
43
44
47
54
62
66
68
72
73
74
75
78
81
82
86
88
91
92
2概要设计
2.1功能模块图栈的次序存储表达
#defineStackSize100//假定预分派的栈空间最多为100个元素typedefcharDataType;//假定栈元素的数据类型为字符
typedefstruct{
DataTypedata[StackSize];
inttop;}SeqStack;
基本操作的算法描述(1)置栈空
voidInitStack(SeqStack*S)
{//将次序栈置空S-top=-1;
}
(2)判栈空
intStackEmpty(SeqStack*S)
returnS-top==-1;
}
(3)判栈满
intStackFull(SeqStack*SS)
{
returnS-top==StackSize-1;
}(4)进栈
voidPush(S,x)
if(StackFull(S))
Error(Stackoverflow);//上溢,退出运行S-data[++S-top]=x;//栈顶指针加1后将x入栈
}(5)退栈
DataTypePop(S)
{
if(StackEmpty(S))
Error(Stackunderflow);//下溢,退出运行
returnS-data[S-top--];//栈顶元素返回后将栈顶指针减1
}
(6)取栈顶元素
DataTypeStackTop(S)
if(StackEmpty(S))
Error(Stackisempty);
returnS-data[S-top];
}
2.2模块间调用关系
Stack.h中调用的base.h#includestdio.h
#includestdlib.h
#includestring.h#defineTRUE1#defineFALSE0#defineOK1
#defineERROR0
#defineOVERFLOW-2typedefintStatus;
2.3主程序模块
主程序maze.c中调用的stac