文档详情

迷宫问题,数据结构.doc

发布:2017-06-18约6.54千字共8页下载文档
文本预览下载声明
#includestdio.h #includestdlib.h #includetime.h #includeconio.h #define X 10 #define Y 10 #define OVERFLOW 0 #define ERROR 0 #define OK 1 #define STAK_INIT_SIZE 100 #define STACKINCREMENT 30 typedef int MazeType; typedef struct seat{ int x;int y; }PosType; typedef struct { int ord; PosType seat; int di; }SElemType; typedef struct { SElemType *base; SElemType *top; int stacksize; }SqStack; int Creat_Maze(MazeType Maze[][Y]); int InitStack(SqStack s); int StackEmpty(SqStack S); int Push(SqStack S,SElemType e); int Pop(SqStack S,SElemType e); int Pass(MazeType Maze[][Y],PosType curpos); void FootPrint(MazeType Maze[][Y],SElemType e); PosType NextPos(PosType Eseat,int di); int MazePath(MazeType Maze[][Y],PosType start,PosType end); int Extra(MazeType Maze[][Y],PosType start,PosType end); void OutputPath(MazeType Maze[][Y]); PosType start={1,1};PosType end={X-2,Y-2};//迷宫的出入口 int n; void main() { static MazeType Maze[X][Y]={0}; if(!Creat_Maze(Maze)) exit(ERROR); printf(\n1--由用户探索路径 \n2--由计算机探索路径\n请选择\n); scanf(%d,n); if(n==1) Extra(Maze,start,end); if(n==2) MazePath(Maze,start,end); } /************建立迷宫***********/ int Creat_Maze(MazeType Maze[][Y])/*出现过错误,形参写成了Maze[][]*/ { int i,j; int c; srand((unsigned)time(NULL)); for(j=0;jY;j++) { Maze[0][j]=1; Maze[X-1][j]=1; } for(i=1;iX-1;i++) { Maze[i][0]=1; Maze[i][Y-1]=1; }//建立围墙 printf(\t\t欢迎进入迷宫游戏\n\n); printf(※ 自动生成迷宫--1\n\n); printf(※ 手动生成迷宫--2\n\n); printf(※ 退出--其他数字键\n\n); printf( 请选择:); scanf(%d,c); system(cls); switch(c) { case 1: for(i=1;iX-1;i++) { for(j=1;jY-1;j++) { if((i==end.x)(j==end.y)||(i==start.x)(j==start.y)) Maze[i][j]=0; else Maze[i][j]=rand()%2; } } printf(生成的迷宫为:(按ENTER键开始探索):\n\n); OutputPath(Maze); return 1; case 2: Maze[1][3]=Maze[1][7]=Maze[2][3]=Maze[2][7]=Maze[3][5]=Maze[3][6]=Maze[4][2]=Maze[4][3]=Maze[4][4]=1; Maze[5][4]=Maze[6][2]=Maze[6][6]=Maze[7][2]=Maze[7][3]=1;Maze[7][4]=Maz
显示全部
相似文档