用顺序栈存储结构设计迷宫没有输出直接结束程序

没有error,但是运行结果什么都没输出就直接结束了


//用栈求解迷宫问题
//后放入的先处理用栈
//所求路径为简单路径,即路径不重复

#include
#include

#define MAXSIZE 100

const int M=8;
const int N=8;

typedef struct box
{
    int i;      //当前方块的行号
    int j;      //当前方块的列号
    int di;     //下一可走相邻方位的方位号
}Box;

typedef struct sttype
{
    Box data[MAXSIZE];
    int top;    //栈顶指针
}StType;

int mg[10][10]=
{
    {1,1,1,1,1,1,1,1,1,1},
    {1,0,0,1,0,0,0,1,0,1},
    {1,0,0,1,0,0,0,1,0,1},
    {1,0,0,0,0,1,1,0,0,1},
    {1,0,1,1,1,0,0,0,0,1},
    {1,0,0,0,1,0,0,0,0,1},
    {1,0,1,0,0,0,1,0,0,1},
    {1,0,1,1,1,0,1,1,0,1},
    {1,1,0,0,0,0,0,0,0,1},
    {1,1,1,1,1,1,1,1,1,1}
};
bool mgpath(int xi,int yi,int xe,int ye);

int main()
{
    if(!mgpath(1,1,8,8))printf("not find");

    return 0;
}

bool mgpath(int xi,int yi,int xe,int ye)
{
    int i,j,k,di,find;
    StType st;
    st.top=-1;
    st.top++;
    st.data[st.top].i=xi;
    st.data[st.top].j=yi;
    st.data[st.top].di=-1;
    mg[xi][yi]=-1;
    while(st.top>-1)
    {
        i=st.data[st.top].i;
        j=st.data[st.top].j;
        di=st.data[st.top].di;   //取栈顶方块

        if(i==xe&&j==ye)      //找到了出口
        {
            printf("迷宫路径如下\n");
            for(k=0;k<=st.top;k++)
            {
                printf("\t(%d,%d)",st.data[k].i,st.data[k].j);
                if((k+1)%5==0)printf("\n");    //每输出五个方块后换一行
            }
            printf("\n");

            return true;
        }

        find=0;
        while(di<4&&find==0)//找下一个可走方块
        {
            di++;
            switch(di)
            {
            case 0:
                i=st.data[st.top].i-1;
                j=st.data[st.top].j;
                break;
            case 1:
                i=st.data[st.top].i;
                j=st.data[st.top].j+1;
                break;
            case 2:
                i=st.data[st.top].i+1;
                j=st.data[st.top].j;
                break;
            case 3:
                i=st.data[st.top].i;
                j=st.data[st.top].j-1;
                break;
            }
            if(mg[i][j]==0)find=1;      
    //找到了下一个可走的相邻方块(i,j)
            if(find==1)
            {
                st.data[st.top].di=di;
                st.top++;
                st.data[st.top].i=i;
                st.data[st.top].j=j;
                st.data[st.top].di=-1;
                mg[i][j]=-1;
            }
            else{                      //没有路径可走则退栈
                mg[st.data[st.top].i][st.data[st.top].j]=0;      //让该位置变成其它路径可走方块
                st.top--;
            }
        }
        return false;
    }
}

求解答,万分感谢🙏