为什么Pop那里会一直报错

为什么Pop那里会一直报错
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
struct Node/定义栈中元素的类型/
{
int x;
int y;
int d;
};
typedef struct Node Token;
struct SNode
{
Token *Data;
int Top;
int MaxSize;
};/定以栈/
typedef struct SNode *Stack;
Stack CreatStack()/创建一个栈/
{
Stack L;
L=(Stack)malloc(sizeof(struct SNode));
L->Top=-1;
L->MaxSize=MAX;
L->Data=(Token *)malloc(sizeof(Token)*MAX);
return L;
}
Token Pop(Stack L)/删除并返回栈顶元素/
{
Token m;
m.d=L->Data[L->Top].d;
m.x=L->Data[L->Top].x;
m.y=L->Data[L->Top].y;
L->Top--;
return m;
}

void Push(Stack L,Token x)/插入元素x/
{
L->Data[++L->Top]=x;
}
int IsEmpty(Stack L)
{
return L->Top==-1;
}
int Jud(Token *n,char s[10][21])/判断是否能走通,并且赋值/
{
int m;
while(n->d<=4)
{
if(n->d==1)
{
if(s[n->x+1][n->y]=='#')
n->d++;
else
return 1;
}
else if(n->d==2)
{
if(s[n->x][n->y+1]=='#')
n->d++;
else
return 1;
}
else if(n->d==3)
{
if(s[n->x-1][n->y=='#'])
n->d++;
else
return 1;
}
else
{
if(s[n->x][n->y-1]=='#')
n->d++;
else
return 1;
}
}
return 0;
}
Token *Convert(Token *m)/走到下一步/
{
Token *al=(Token *)malloc(sizeof(Token));
if(m->d==1)
{
al->x=m->x+1;
al->y=m->y;
al->d=0;
}
else if(m->d==2)
{
al->x=m->x;
al->y=m->x+1;
al->d=0;
}
else if(m->d==3)
{
al->x=m->x;
al->y=m->y-1;
al->d=0;
}
else
{
al->x=m->x-1;
al->y=m->y;
al->d=0;
}
return al;
}
void Operate(Stack L,Token *start,Token *end,char s[10][21]) /走迷宫/
{
Token * m=start;
while(m->x!=end->x&&m->y!=end->y)
{
if(Jud(m,s))
{
Push(L,*m);
m=Convert(m);
}
else
{
*m=Pop(L);
}
}
}
void Print(Stack L,char s[10][21])/打印迷宫/
{
Token *m;
if(!IsEmpty(L))
{
*m=Pop(L);
s[m->x][m->y]='#';
}
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<21;j++)
{
printf("%c",s[i][j]);
}
printf("\n");
}
}
int main()
{
char a[10][21]={
"####################",
"# # #",
"# # #",
"# # #",
"# ##########",
"# # # #",
"# # # #",
"# # #",
"# #",
"####################"
};
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<21;j++)
{
printf("%c",a[i][j]);
}
printf("\n");
}
Stack L=CreatStack();
Token *start=(Token *)malloc(sizeof(Token));
start->x=1;
start->y=1;
start->d=0;
Token *end=(Token *)malloc(sizeof(Token));;
end->x=8;
end->y=18;
end->d=0;
Operate(L,start,end,a);
Print(L,a);
return 0;
}

1.