资源简介
用栈辅助实现迷宫问题的求解,通过随机数发生器产生迷宫图,程序显示求解步骤
代码片段和文件信息
#include
#include
#include //因为要产生随机函数种子
#include //因为要用Sleep延时函数
#define MAX_X 20 //定义迷宫大小
#define MAX_Y 20
int maze[MAX_X][MAX_Y];
class stack_for_maze//迷宫行走路线存储专用栈类!
{
private:
struct node//结点用来记录压栈的迷宫坐标
{
int x;
int y;
char direction; //上一步的行走方向(即如何来到这里的) → ← ↑ ↓
node* next;
};
node* head;
public:
stack_for_maze()//构造函数
{
head=NULL;
}
~stack_for_maze()//析构函数
{
node* p=head;
while(head!=NULL)
{
head=head->next;
delete p;
p=head;
}
}
//________________________________________
void push(int xxint yychar ddirection)//压栈,将坐标和行走方向压栈
{
node* new_node;
new_node=new node;
if(new_node!=NULL)
{
new_node->x=xx;
new_node->y=yy;
new_node->direction=ddirection;
new_node->next=NULL;
if(head==NULL)
head=new_node;
else
{
new_node->next=head;
head=new_node;
}
}
else
cout<<“\n因为内存分配失败导致本次压栈失败!!!\n“;
}
//________________________________________
node* pop(int& xxint& yy)//出栈时带回栈顶元素坐标
{
if(head!=NULL)
{
node* p=head;
head=head->next;
xx=p->x;
yy=p->y;
delete p;
}
else
{
cout<<“\n因为栈已空导致本次出栈失败\n“;
}
return head;
}
//________________________________________
void print()//输出栈内元素
{
if(head!=NULL)
{
node* p=head;
while(p!=NULL)
{
cout<<“ “<x<<“ “<y<<“ “<direction< p=p->next;
}
}
else
cout<<“\n栈为空,打印失败\n“;
}
};
//_______________________________________________________
void CreateMaze()//创建迷宫
{
int max_way=MAX_X*MAX_Y;//产生通路的参数,值越大障碍越少
int xy;
for(x=0;x for(y=0;y maze[x][y]=1; //先把迷宫全部设为墙壁
srand((unsigned)time(NULL));//随机函数种子发生器(以时间做参数)
for(int i=0;i<=max_way;i++)//随机构建迷宫通路
{
x=rand()%(MAX_X-2)+1;
y=rand()%(MAX_Y-2)+1;
maze[x][y]=0;
}
maze[1][1]=0;//入口
maze[MAX_X-2][MAX_Y-2]=0;//出口
maze[0][1]=8;
maze[MAX_X-1][MAX_Y-2]=0;
}
//_________________________________________________________
void PrintMaze()//输出迷宫的当前状态
{
int xy;
system(“cls“);//清屏
cout< for(x=0;x {
for(y=0;y {
if(maze[x][y]==0){cout<<“ “;continue;}//通路
if(maze[x][y]==1){cout<<“■“;continue;}//墙
if(maze[x][y]==2){cout<<“ד;continue;}//死胡同
if(maze[x][
相关资源
- 利用回溯法解决迷宫问题
- 数据结构 迷宫问题 C++ 栈方法
- 迷宫问题,C语言写的
- C++ 回溯法求解罗密欧与朱丽叶的迷宫
- 利用队列找出迷宫的最优解
- IEEE电脑鼠走迷宫(完整参赛代码)
- 纯c语言迷宫源码.zip
- c语言支持自己创建迷宫,并求解最短
- 开外挂版走迷宫(c++小游戏源码)
- c++ 走迷宫
- c++ 迷宫益智游戏源码(mfc)
- c++ 迷宫问题(给出迷宫,制动寻径问
- c++ 迷宫游戏
- c语言实现 迷宫-2小游戏源码(山东大
- C语言简单迷宫游戏代码
- 老鼠走迷宫游戏升级版课程设计c语言
- C语言迷宫问题
- 完全可以运行的迷宫程序递归和非递
- 有mfc做的一个简单的迷宫游戏
- 数据结构(C语言版)迷宫求解问题
- MFC 随机生成迷宫 动态实现有回溯地走
- 数据结构的迷宫自动寻路问题C语言写
- c语言-广度优先-迷宫寻路-程序+源代码
- c++实现迷宫栈与二位数组的应用,含
- C语言实现老鼠走迷宫.zip
- 老鼠走迷宫程序 C语言程序
- 数据结构中关于迷宫求解 c语言
- 利用栈实现迷宫问题的非递归解法
- 迷宫的广度优先搜索和深度优先搜索
- C++实现迷宫游戏 课程设计
评论
共有 条评论