文档介绍:《数据结构》
课程设计报告
题 目: 老鼠走迷宫
班 级:
姓 名:
学 号:
指导教师:
日 期: 2010 年 7 月 01 日
一、课程设计目标
1、 问题描述
本程序是利用非递归的方法求出一条走出迷;scanf("%d",&); printf("输入出口行坐标和列坐标:");scanf("%d",&);scanf("%d",&); if(MazePath(maze,S,start,end))
printpath(maze,S,size);
else printf("找不到通路!\n\n");
}
}
Status MazePath(int maze[12][12],SqStack &S, PosType start, PosType end)
{
PosType curpos;
int curstep;
SElemType e;
InitStack(S);
curpos = start;
curstep = 1; 〃定义初始化
do {
if (Pass(maze,curpos))
{
Markfoot(maze,curpos);
=1;
= curstep;
= curpos;
Push(S,e);
if (== && ==) return OK;
curpos = NextPos(curpos, 1);
curstep++;
} 〃查找成功,继续找下一个通路
else
{
if (!StackEmpty(S))
{
Pop(S,e);
while (==4 && !StackEmpty(S)) {
Markfoot(maze,);
Pop(S,e);
}
if (<4)
{
++;
Push(S, e);
curpos = NextPos(, );
}
}
}
} while (!StackEmpty(S));
return ERROR;//查找不成功,退回上一个通路位置
〈我所负责〉
}
void Initmaze(int maze[12][12],int size)
{
char select;
printf("选择创建方式A:自动生成B:手动创建5"); label:scanf("%c",&select);
if(select=='a'llselect=='A')
{
for(int i=0;ivsize+2;i++)maze[0][i]=l;
for( i=1;i<size+1;i++)
{
maze[i][0]=1;
for(int j=1;jvsize+1;j++)
maze[i][j]=rand()%2;
maze[i][size+1]=1;
}
for(i=0;ivsize+2;i++)maze[size+1][i]=1;
}〃自动创建迷宫的算法
else if(select=='b'llselect=='B')
{
printf("按行输入%d*%d数据,0代表可通,1代表不可通(每行以Enter结束):\n",size,size);
for(int i=0;i<size+2;i++)maze[0][i]=1;
for( i=1;i<size+1;i++)
{
maze[i][0]=1;
for(int j=1;j<size+1;j++)
scanf("%d", &m aze[i][j]);
maze[i][size+1]=1;
}
for(i=0;i<size+2;i++)maze[size+1][i]=1;
}
else if(select=='\n')goto label;
else printf("输入错误!");
}〃手动创建迷宫过程
void printmaze(int maze[12][12],int size)
{
printf("\n\n");
printf(”显示所建的迷宫(#表示外面的墙):\n");
for(int i=0;i<size+2;i++)printf("%c ”,# );printf("\n");
for(i=1;i<size+1;i++)
{
printf("%c ",‘ #');
for(int j=1;j<size+1;j++)
{
printf("%d ",maze[i][j]);
}
printf(”%c",#);
printf("