C++栈实现数据结构中的迷宫求解

       利用顺序栈实现数据结构中的迷宫求解问题
       首先初始化一个二维数组vector<vector<int>>,将障碍物标记为-1,为走过的点标记为0,走过的点标记为1
从入口地址开始,依次按上下左右四个方向寻找是否有可以通行的点,如果有,则将该点的坐标位置入栈,并将该点标记为1,以重复走以走过的点,如果四个方向均未找到可以通行的点,则出栈,直到找到有可以通行的点,重复此过程,最后入栈的坐标位置等于出口位置时,结束此过程,并倒序输出栈中的路径点。


算法实现过程如下:


#include "stdafx.h"
#include <iostream>
#include<vector>
#define STACK_INIT_SIZE  100
#define STACK_INCREMENT  20
using namespace std;

typedef struct elemStruct
{
	int x;//点的x坐标
	int y;//点的y坐标
	//int flag;//点表示,-1代表障碍物,1代表已走过的点,0代表未走过的点
}Elem;

typedef struct stack
{
	Elem *top;//栈顶指针
	Elem *base;//栈底指针
	int size;//栈当前容量
}sqStack;

//初始化栈
void InitStack(sqStack *&S)
{
	//构造一个空栈
	S = (sqStack*)malloc(sizeof(sqStack));
	S->base = S->top = NULL;
	S->size = 0;
	S->base = (Elem *)malloc(sizeof(Elem)*STACK_INIT_SIZE);
	if (!S->base)
	{
		cout << "内存分配失败!" << endl;
		exit(OVERFLOW);
	}
	else {
		S->top = S->base;
		S->size = STACK_INIT_SIZE;
	}
}

//判断栈是否为空
bool isEmptyStack(sqStack *S)
{
	if (S->base == S->top)
	{
		return true;
	}
	else
	{
		ret
  • 8
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值