数据结构迷宫升级版本 Microsoft Word 文档#include
#include
#define M 15//M和N的值可以改,定义一个迷宫大小数组最大空间,
#define N 15
/*************栈函数****************/
typedef struct Seat//定义迷宫内点的坐标类型
{
int x;//x行,y列
int y;
};
typedef struct Element//链栈元素
{
Seat seat;//包含坐标(x,y)
int d;//记录方向(数字)
};
typedef st...
#include
#include
#define M 15//M和N的值可以改,定义一个迷宫大小数组最大空间,
#define N 15
/*************栈函数****************/
typedef struct Seat//定义迷宫内点的坐标类型
{
int x;//x行,y列
int y;
};
typedef struct Element//链栈元素
{
Seat seat;//包含坐标(x,y)
int d;//方向(数字)
};
typedef struct Lstack//创建链栈单元素
{
Element elem;//链栈元素
Lstack *next;//下一个链栈地址
}*PLstack;
int Initstack(PLstack &S)//初始化空栈
{
S=NULL;
return true;
}
int StackEmpty(PLstack &S)//判断栈是否为空
{
if(S==NULL)
return true;
else
return false;
}
int Pop(PLstack &S,Element &e)//压入新数据元素
{
PLstack p;
if(!StackEmpty(S))
{
e=S->elem;
p=S;
S=S->next;
free(p);
return true;
}
else
return false;
}
int push(PLstack &S,Element e)//栈顶元素出栈
{
PLstack p;
p=(PLstack)malloc(sizeof(Lstack));
p->elem=e;
p->next=S;
S=p;
return true;
}
/*************建立迷宫*******************/
int Creatmaze(int maze[M][N]){
int m,n,i,j;//m,n迷宫行,列
printf("请输入要创建迷宫的行数m:");
scanf("%d",&m);
printf("请输入要创建迷宫的列数n:");
scanf("%d",&n);
printf("请创建%d行%d列迷宫(用空格隔开,0表示通道,1表示墙壁):\n",m,n);
for(i=1;i(%d,%d,%s)",e.seat.x,e.seat.y,*p);
}
printf("\n");//跳出两层循环,本来用break,但发现出错,exit又会结束程序,选用return
return true;
}
if(maze[a][b]==0)//找到可以前进的非出口的点
{
maze[a][b]=1;//标记走过此点
elem.seat.x=i;
elem.seat.y=j;
elem.d=d;
push(S1,elem);//当前位置入栈
i=a;//下一点转化为当前点
j=b;
d=-1;
}
d++;
}
}
printf("很遗憾:没有找到通道!\n");
}
void main()
{
Seat start,end;//start,end入口和出口的坐标
int add[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//行增量和列增量 方向依次为东西南北
int maze[M][N];
Creatmaze(maze);
printf("请输入迷宫入口坐标(逗号隔开):");
scanf("%d,%d",&start.x,&start.y);
printf("请输入迷宫出口坐标(逗号隔开):");
scanf("%d,%d",&end.x,&end.y);
MazePath(start,end,maze,add);//找通道
这是对网上一篇程序进行的升级,亮点是坐标表示更好,方向不再是数字而是英文方向单词更易于理解,希望对大家有帮助!
中南民族大学电子信息工程学院10级陈福林
本文档为【数据结构迷宫升级版本 Microsoft Word 文档】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。