正在加载图片...
for(dir=0: dir<8: dir++) I X=I+move [dir].dx y=j+move [dir].d if(maze[x][y]==0)//如有可到达点,将此点坐标入对列 (p->rear++ ].y=y; p->queue Lp->rear]. pre=p->front maze[x][y]=-1;//设置已达到标志 if((x==M)&(y==N)//如到达出口,返回true return(true p> front-+;//头指针指向下一个队列元素 return( false);//迷宫无通路 /*显示迷宫通路 void printpath(queuetp*p, sqstktp *s elemtype elem; Do/*从队列中取出最短路径放入栈中 I elem. x=p->queue [I].x elem. x=p->queue[l]y: if(f= false)//如果f为假,则栈长度太短 printf(“栈长太短“); fwhile(i>0) hile(i>-1) printf(s-> stack[i].x,s-> stack[i].y);/*显示迷宫最短的通路 if(i>0) printf(“→” if((s->top-i+1)%4=0) printf(“Ⅶn”)for(dir=0;dir<8;dir++) { x=I+move[dir].dx; y=j+move[dir].dy; if(maze[x][y]==0)//如有可到达点,将此点坐标入对列 { p->rear++: p->queue[p->rear].x=x; p->queue[p->rear].y=y; p->queue[p->rear].pre=p->front; maze[x][y]=-1;//设置已达到标志 } if(((x==M)&&(y==N))//如到达出口,返回 true return(true); } p->front++;//对头指针指向下一个队列元素 } return (false);//迷宫无通路 } /*显示迷宫通路 void printpath(queuetp*p, sqstktp *s) { int i,f; elemtype elem; i=p->rear; Do /*从队列中取出最短路径放入栈中 { elem.x=p->queue[I].x; elem.x=p->queue[I].y; f=push(s,elem); if(f==false)//如果 f 为假,则栈长度太短 printf(“栈长太短“); i=p->queue[i].pre; }while(i>0); i=s->top; While(i>-1) { printf(s->stack[i].x,s->stack[i].y);/*显示迷宫最短的通路 if(i>0) printf(“→”); if((s->top-i+1)%4==0) printf(“\n”); i—;
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有