typedef struct { int x,y; int pre; } sqtype; sqtype sq[num]; int front,rear; void path ( maze,move ) int maze[m][n];/*迷宫数组*/ item move[8];/*坐标增量数组*/ { sqtype sq[NUM]; int front,rear; int x,y,i,j,v; front=rear=0; sq[0].x=1; sq[0].y=1; sq[0].pre=-1; /*入口点入队*/ maze[1,1]=-1; while ( front<=rear ) /*队列不空*/ { x=sq[front].x ; y=sq[front ].y ; for ( v=0; v<8; v++ ) { i=x+move[v].x; j=x+move[v].y; if ( maze[i][j]==0 ) { rear++; sq[rear].x=i; sq[rear].y=j; sq[rear].pre=front; maze[i][j]=-1; } if ( i==m&&j==n ) { printpath ( sq,rear ); /*打印迷宫*/ restore ( maze ); /*恢复迷宫*/ return 1; } } /*for v*/ front++; /*当前点搜索完,取下一个点搜索*/ } /*while*/ return 0; } /*path*/ void printpath ( sqtype sq[],int rear ) /*打印迷宫路径*/ { int i; i=rear; do { printf ( " ( %d,%d ) --",sq[i].x , sq[i].y ) ; i=sq[i].pre; /*回溯*/ } while ( i!=-1 ); } /*printpath*/