//
源代码如下,直接进入 VC 环境
演示即可,在 turbo c 下可能不会成功 #include
#include #define MAXSIZE 1000 struct Position{ int x; int y; }; typedef struct node{ Position position[MAXSIZE]; Position prior[MAXSIZE]; int rear,front; }SeqQuene,*PSeqQuene; void main() { SeqQuene Quene; int **maze; int size;//the size of the maze int i,j;//to control loops Position CurPos,EndPos; int flag=0;//indicates thar there is no path //initial the sequence quene Quene.front = 0; Quene.rear = 0; //initial the maze printf("Please input the size of the maze:"); scanf("%d",&;size); size+=2; maze = (int **)malloc(size*sizeof(int *)); for(i=0;i printf("The maze you input is like following:\n"); for(i=0;i=0;i--) { if(CurPos.x==Quene.position[i].x CurPos.y==Quene.position[i].y) { maze[Quene.position[i].x][Quene.position[i].y]=8; CurPos.x=Quene.prior[i].x; CurPos.y=Quene.prior[i].y; }//if }//for flag=1;//indicate the program find the path }//if else { if(maze[CurPos.x+1][CurPos.y]==1) { Quene.position[Quene.rear].x=CurPos.x+1; Quene.position[Quene.rear].y=CurPos.y;
&;&;
Quene.prior[Quene.rear].x=CurPos.x; Quene.prior[Quene.rear++].y=CurPos.y; }//if if(maze[CurPos.x][CurPos.y+1]==1) { Quene.position[Quene.rear].x=CurPos.x; Quene.position[Quene.rear].y=CurPos.y+1; Quene.prior[Quene.rear].x=CurPos.x; Quene.prior[Quene.rear++].y=CurPos.y; }//if if(maze[CurPos.x-1][CurPos.y]==1) { Quene.position[Quene.rear].x=CurPos.x-1; Quene.position[Quene.rear].y=CurPos.y; Quene.prior[Quene.rear].x=CurPos.x; Quene.prior[Quene.rear++].y=CurPos.y; }//if if(maze[CurPos.x][CurPos.y-1]==1) { Quene.position[Quene.rear].x=CurPos.x; Quene.position[Quene.rear].y=CurPos.y-1; Quene.prior[Quene.rear].x=CurPos.x; Quene.prior[Quene.rear++].y=CurPos.y; }//if }//else }//while //print the result if(flag) { for(i=0;i 点: 1. 输入原始的迷宫规模的时候,直接输入几行几列,中间不要有逗号
2. 输入原始迷宫的时候,有路的地方输入 1,没有路的地方输入 0,输入时一 次性输入完毕,中间用空格或者回车符隔开 3. 输入起始位置和终点位置的时候,中间也不要加入逗号;并且,输入的位置 是在“加上一堵墙”之后的位置 4. 程序中在迷宫的四周各加了“一堵墙”