文档详情

2025年智能路径探索与迷宫问题解决方案研究.docx

发布:2024-12-15约1.14万字共28页下载文档
文本预览下载声明

《编程实训》试验汇报书

专业:计算机科学与技术班级: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

显示全部
相似文档