报错信息:#include
#define MaxSize 50
int mg[5][5] ;
typedef struct{
int i;
int j;
int pre;
}ElemType;
typedef struct {
ElemType data[MaxSize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue *&q);
void DetroyQueue(SqQueue *&q);
bool QueueEmpty(SqQueue *q);
bool QueueFull(SqQueue *q);
bool EnterQueue(SqQueue *&q,ElemType e);
bool DepartQueue(SqQueue *&q,ElemType &e);
bool mgpath1(int xi,int yi,int xe,int ye);
void print(SqQueue *qu,int front);
using namespace std;
int main()
{
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
cin>>mg[i][j];
mgpath1(0,0,4,4);
return 0;
}
void print(SqQueue *qu,int front)
{
int k=front,j;
cout<
do
{
j=k;
k=qu->data[k].pre;
qu->data[j].pre=-1;
}while(k!=0);
k=0;
while(k
{
if(qu->data[k].pre==-1)
cout<<"("<data[k].i<<", "<data[k].j<<")"<<endl;;
k++;
}
}
bool mgpath1(int xi,int yi,int xe,int ye)
{
int i,j,find=0,di;
ElemType e;
SqQueue *qu;
InitQueue(qu);
e.i=xi;
e.j=yi;
e.pre=-1;
EnterQueue(qu,e);
mg[xi][yi]=-1;
while(!QueueEmpty(qu)&&!find)
{
DepartQueue(qu,e);
i=e.i;
j=e.j;
if(i==xe&&j==ye)
{
find=1;
print(qu,qu->front);
return true;
}
for(di=0;di<4;di++)
{
switch(di)
{
case 0: i--;break;
case 1: j++;break;
case 2: i++;break;
case 3: j--;break;
}
if(mg[i][j]==0)
{
e.i=i;
e.j=j;
e.pre=qu->front;
EnterQueue(qu,e);
mg[i][j]= -1;
}
}
}
return false;
}
void InitQueue(SqQueue *&q)
{
q=new SqQueue;
q->front=q->rear=-1;
}
void DetroyQueue(SqQueue *&q)
{
delete q;
}
bool QueueEmpty(SqQueue *q)
{
return (q->front==q->rear);
}
bool QueueFull(SqQueue *q)
{
return (q->rear==MaxSize-1);
}
bool EnterQueue(SqQueue *&q,ElemType e)
{
if(QueueFull(q))
return false;
q->rear++;
q->data[q->rear]=e;
return true;
}
bool DepartQueue(SqQueue *&q,ElemType &e)
{
if(QueueEmpty(q))
return false;
q->front++;
e=q->data[q->front];
return true;
}