数据结构严蔚敏 栈基本应用一 迷宫问题

利用严蔚敏《数据结构》中栈的基本应用解决迷宫问题,通过穷举法和栈来跟踪路径,确保不重复访问已探索区域。代码包括栈结构定义、迷宫求解函数、辅助函数及测试案例,实现从入口到出口的唯一路径查找。
摘要由CSDN通过智能技术生成

【数据结构严蔚敏】 第三章 栈基本应用 迷宫问题

问题分析:

求迷宫中从入口到出口的路径问题,使用穷举法,为了实现求解过程中原路返回操作,使用栈的结构。
注:当前道路可通,指的是该位置不仅是通道块,而且要求未曾到访过(否则会原地打转)。


代码部分如下:

1.基本结构定义

关于栈的基本定义,见栈的基本操作

typedef struct {
   
	int row;//行
	int column; //列
}PosType;    //坐标类型

typedef struct {
   
	int ord;     //通道块在路径上的序号
	PosType seat;//通道块在迷宫中的坐标位置
	int dir;	 //下一通道块的方向
}SElemType;		 //栈的元素类型

typedef struct {
   
	int a[11][11];	//定义10*10的二维迷宫,值为1表示可以通过,值为0表示不能通过。
	PosType start = {
    1,1 };//定义起始位置坐标为(1,1)
	PosType end = {
    9,9 };//定义出口位置坐标为(9,9)
}MazeType;

2.迷宫求解函数实现

主要理解原路返回时的Pop,Push操作

Status Mazepath(MazeType maze) {
   
	SqStack S;
	InitStack(S);
	PosType curpos = maze.start;   //当前位置
	int curstep = 1;               //first step
	SElemType e;
	do {
   
		if (Pass(maze, curpos)) {
   
			FootPrint(maze, curpos);	   //留下足迹
			e = {
    curstep, curpos, 1 };
			Push(S, e)
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值