数据结构与算法_深度优先寻路

本文介绍了深度优先搜索的实现步骤,特别是在地图寻路中的应用。在已知地图中,通过逐点检查相邻方向的可达性来推进搜索。当无法继续前行时,会回溯到之前的位置尝试其他路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 深度优先搜索

深度优先搜索的实现步骤为,在一个已知的地图内,逐点搜索下一个路径点的四个方向是否可以同行,如果找到一个可以通行的方向,那么向前前进,如果搜索到的最前面一个点无法向前搜索,则退后,重新搜索之前搜索过点的其它方向。

2. 代码实现

.h 文件

#pragma once
template<typename T>
class CMyStack
{
   
   
 T *pBuff;
 size_t len;
 size_t maxSize;
public:
 CMyStack();
 ~CMyStack();
 void clear();
public:
 void push(T const& elem);//将元素压入容器底部
 void pop();//将元素从底部退出
 T const& getTop()const;//得到容器内倒数第二个元素
 bool empty()const;//判断容器是否为空
};
template<typename T>
inline CMyStack<T>::CMyStack()
{
   
   
 pBuff = nullptr;
 len = maxSize = 0;
}
template<typename T>
inline CMyStack<T>::~CMyStack()
{
   
   
 clear();
}
template<typename T>
inline void CMyStack<T>::clear()
{
   
   
 if (pBuff != nullptr) delete[] pBuff;
 pBuff = nullptr;
 len = maxSize=0;
}
template<typename T>
inline void CMyStack<T>::push(T const & elem)
{
   
   
 //执行从尾部压入数据的过程,添加新数据需要重新分配内存,并且创建一个临时变量
 if (len >= maxSize)
 {
   
   
  maxSize = maxSize + (((maxSize) >> 1) > 1 ? (maxSize >> 1) : 1);
  T *tempBuff = new T[maxSize];//给指针new一个内容,格式是 new 类型 [数据个数]
  for (size_t i = 0; i < len; ++i) tempBuff[i] = pBuff[i];
  if (pBuff != nullptr) delete[] pBuff;
  pBuff = tempBuff;
 }
 pBuff[len++
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值