数据结构之迷宫

该程序利用栈数据结构求解迷宫问题,找出从起点到终点的所有路径,并记录第一条最短路径。通过初始化、销毁栈,以及进栈、出栈等操作,结合深度优先搜索策略,当找到出口时更新最短路径。最后,程序在主函数中调用迷宫路径求解函数并输出最短路径。
摘要由CSDN通过智能技术生成

1.实验名称: 用栈求解迷宫问题中的所有路径及最短路径程序

2.实验内容:

编写一个程序求解迷宫问题,要求输出迷宫的所有路径,并求第一条最短路径长度及最短路径

3.算法及UML图:

void InitStack(SqStack*& s)    //初始化栈
{
	s = (SqStack*)malloc(sizeof(SqStack));
	s->top = -1;	
}
void DestroyStack(SqStack*& s)   //销毁栈
{
	free(s);
}
bool StackEmpty(SqStack *&s)     //判断栈是否为空
{
	return (s->top == -1);
}
bool Push(SqStack *&s, Elemtype e)     //进栈
{
	if (s->top == MaxSize - 1)	
		return false;
	s->top++;					
	s->data[s->top] = e;
	return true;
}
bool Pop(SqStack *&s, Elemtype& e)      //  出栈
{
	if (s->top == -1)	
		return false;
	e = s->data[s->top];
	s->top--;
	return true;
}
bool GetTop(SqStack *s, Elemtype &e)      //取栈顶元素
{
	if (s->top == -1)	
		return false;
	e = s->data[s->top];
	return true;
}
bool mgpath(int xi, int yi, int xe, int ye)//求解路径为(xi,yi)->(xe,ye)
{
	Box path[MaxSize], e;
	int i, j, di, i1, j1, k, idx, count;     //
	bool find, flag;
	SqStack *st;
	InitStack(st);	
	e.i = xi; e.j = yi; e.di = -1;	//设置e为入口
	Push(st, e);	//将入口进栈
	map[xi][yi] = -1;	//将入栈的位置的值置为-1,避免重复走同一方块
	idx = 1;	//记录迷宫解的条数
	flag = false;	//默认迷宫没有
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值