朗吾東 2022-12-23 22:40 采纳率: 71.4%
浏览 50
已结题

C语言数据结构链栈迷宫问题

img

为什么我在输入完出口后,过一会程序就自己停止了?

下面是迷宫求解函数,问题应该就在这

void Path(int **maze,int m,int n)    //迷宫求解 
{
    Direct direct[4];    //定义东,南,西,北四个方向 
    direct[0].x = 0,direct[0].y = 1;    //向东走 
    direct[1].x = 1,direct[1].y = 0;    //向南走 
    direct[2].x = 0,direct[2].y = -1;    //向西走 
    direct[3].x = -1,direct[3].y = 0;    //向北走
    LNode *stack;
    Temp T[MAX],temp;
    int x,y,X,Y,d,count = 0,length,minlength;
    bool find = false;
    *(*(maze+1)+1) = -1;
    temp.x = 1,temp.y = 1,temp.d = -1;
    Init(stack);
    Push(stack,temp);
    while(!isEmpty(stack))
    {
        getPop(stack,&temp);
        x = temp.x,y = temp.y,d = temp.d + 1;
        if(x == m&&y == n)
        {
            length = 0;
            printf("迷宫第%d条路径如下:",++count);
            while(!isEmpty(stack)){
                Pop(stack,&temp);
                T[length++] = temp;
            }
            if(length < minlength)
            {
                minlength = length;
            }
            for(int i = 1;length > 0;i++)
            {
                printf("[%d,%d],%d ",T[--length].x,T[length].y,T[length].d);
                Push(stack,T[length]);
                if(i % 5 == 0)
                printf("\n");
            }
            printf("\n");
            Pop(stack,&temp);
            *(*(maze+temp.x)+temp.y) = 0;
        }
        else
        {
            Pop(stack,&temp);
            *(*(maze+temp.x)+temp.y) = 0;
        }
        while(d<4)
        {
            X = x + direct[d].x;
            Y = y + direct[d].y;
            if(*(*(maze+X)+Y) == 0)
            {
                temp.x = X,temp.y = Y,temp.d = d;
                Push(stack,temp);
                x = X,y = Y,*(*(maze+X)+Y) = -1;
                d = 0;
            }
            else
            {
                d++;
            }
        }
    }
    printf("最短的一条路径是路径是第%d条路径\n",minlength);
    if(find == false)
    printf("该迷宫没有可以到达出口的路径!\n");
}

  • 写回答

1条回答 默认 最新

  • m0_57781768 2022-12-24 00:24
    关注

    该程序似乎旨在解决迷宫问题并打印它找到的路径。该程序在搜索解决方案时使用堆栈来存储路径的位置和方向。栈在迷宫的起点被初始化,程序继续寻找解,直到栈为空。

    有几个可能的原因会导致程序在一段时间后自行停止。一种可能是程序遇到无限循环。这可能是由程序逻辑错误引起的,例如缺少 break 语句或条件始终为真。

    另一种可能性是程序内存不足。该程序使用一个结构数组来存储路径,如果该数组不够大以容纳所有路径,则可能导致程序崩溃或意外停止。

    如果没有关于程序的具体行为和输入数据的更多信息,就很难查明问题的确切原因。我建议检查代码并检查可能导致程序自行停止的任何潜在问题或错误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月12日
  • 创建了问题 12月23日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么