1.类的析构函数的外实现出错而产生了如下报错
~queue::queue(){if(p) delete []p;}
正确写法:
queue::~queue(){if(p) delete []p;}
2.再if判断是否成立时 若某个条件不成立,则&&之后的程序将不再运行。所以应将判断数组是否越界的判断条件放在第一个。
if((q.rol-1>=0)&&(up.dis>q.dis+1||up.dis==m*n)&&up.c!='X'){
up.dis=q.dis+1;
que.enQueue(up);
}
if((q.col+1<m)&&(right.dis>q.dis+1||right.dis==m*n)&&right.c!='X'){
right.dis=q.dis+1;
que.enQueue(right);
}
if((q.rol+1<n)&&(down.dis>q.dis+1||down.dis==m*n)&&down.c!='X'){
down.dis=q.dis+1;
que.enQueue(down);
}
if((q.col-1>=0)&&(left.dis>q.dis+1||left.dis==m*n)&&left.c!='X'){
left.dis=q.dis+1;
que.enQueue(left);
}
PS:本题写的是一个简单的队列解决迷宫问题,属于是广度优先搜索。如果将队列改为栈,则为深度优先搜索~