正在加载图片...
i elem. x =Null e. y elem. dir =Null return(elem) return(s-> stack[s->top+1]);/*返回栈顶元素*/ }/*pop*/ /*寻找迷宫中的一条通路* void path(int maze[ ][N2], struct moved move[, sqstktp s*) int 1, j, dir, x, y, f elemtype elem maze[l][1]=-1;/*设[1][1]为入口处*/ /*循环,直到入口处或出口处为止*/ x= trove[dir].dx;/*求下一步可行的到达点的坐标*/ =j+move [dir]. dy if(maze [][y]==o) telem. dir f=push(s,elem);/*如果可行,将此点数据入栈*/ f(f== False)/*如果入栈操作返回假,说明栈容量不够*/ printf(“栈长度太短\n”) i=x:j=y: dir=0; maze [x][y]=-1: if(dir<7)/*如果当前方向不可行,就转到下一个方向*/ dir (elem=pop(s);/*8个方向都不可行,就退回一步*/ f(elem. x!=Null) Ii=elem. x dir=elem. dir+1: 1 } while(!(s->top==-1)&&(dir>=7)‖|(x==M)&&(y= =N)&&(maze[x][y]==-1)) /*如果是入口处,则迷宫无通路*/{ elem.x =Null; elem.y =Null; elem.dir =Null; return(elem); } else { s->top- -; return(s->stack[s->top+1]); /*返回栈顶元素*/ } }/*pop*/ /*寻找迷宫中的一条通路*/ void path(int maze[ ][N2],struct moved move[],sqstktp s*) { int i,j,dir,x,y,f; elemtype elem; i=1;j=1;dir=0; maze[1][1]=-1; /*设[1][1]为入口处*/ /*循环,直到入口处或出口处为止*/ do { x=i+move[dir].dx; /*求下一步可行的到达点的坐标*/ y=j+move[dir].dy; if (maze[x][y]= =0) { elem.x=i;elem.y=j;elem.dir=dir; f=push(s,elem); /*如果可行,将此点数据入栈*/ if (f= =False) /*如果入栈操作返回假,说明栈容量不够*/ printf(“栈长度太短\n”); i=x;j=y;dir=0;maze[x][y]=-1; } else if (dir <7) /*如果当前方向不可行,就转到下一个方向*/ dir + +; else { elem=pop(s); /*8 个方向都不可行,就退回一步*/ if (elem.x!=Null) { i=elem.x; j=elem.y; dir=elem.dir+1; } } }while (!((s->top= =-1)&&(dir>=7)||(x= =M)&&(y= =N)&&(maze[x][y]==-1))); /*如果是入口处,则迷宫无通路*/
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有