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++