1.2.1 题目内容
1.2.1-A [问题描述]
利用栈操作实现迷宫问题求解。
1.2.1-B [基本要求]
(1)从文件中读取数据,生成模拟迷宫地图,不少于20行20列。
(2)给出任意入口和出口,显示输出迷宫路线。
1.2.2 算法思想
这段代码实现了一个迷宫求解的功能,使用了DFS深度优先搜索算法以及回溯法的思想来查找从起点到终点的路径。具体实现包括创建栈(typedef struct stack)和节点数据结构(typedef struct Node),以及进栈(stackpush函数)、获取栈顶(stacktop函数)、弹栈(stackpop函数)等实现栈的基础功能,同时还实现了打印栈(Print函数),创建迷宫(createPuzzle函数)等功能。在主函数中,程序首先读取文件中的迷宫信息,然后让用户输入起点和终点坐标,并进行DFS搜索,最后输出找到的路径或者提示无解。
在结果显示方面,为了实现良好交互的界面,通过Set_Color函数来控制字体颜色,若是找到可以连通的路径,则以绿色输出路径;若是不能找到,则以红色输出:“搜索完毕,此迷宫无解!”作为提示。
1.2.3 数据结构
动态申请空间的栈,结构体和相关类申明如下所示:
1.2.3-A Node
// 节点数据结构,存储节点
typedef struct Node
{
int x; // 横坐标
int y; // 纵坐标
} Node;
1.2.3-B Stack
// 栈数据结构,存储栈
typedef struct stack
{
int size; // 栈的容量
Node* top; // 栈顶
Node* base; // 栈底
} stack;
1.2.5 测试数据与运行结果
1.2.5-A 测试数据
文件T2.txt中的内容:
1.2.5-B 运行结果
源码地址:GeekclubC/Course-Design-of-Data-Structure: 用C++完成的数据结构课程设计 (github.com)