通过递归传递指向结构的指针(迷宫求解)

Passing pointers to structures through recursion (maze solving)

大家好,我在大学学习计算机 C 编程入门课程,我们被要求做一个解决迷宫的作业。我正在编写这段代码来找到迷宫的可达性和解决方案。我将包含所有迷宫元素的结构 M 传递给它,然后使用递归来搜索迷宫。当我在自身内部调用该函数时,我不确定要传递什么参数,因为当我尝试将参数作为 assign_reachability(&M) 传递时,我不断收到错误消息。如果您有任何建议或帮助,我将不胜感激。

谢谢

int
assign_reachability(maze_t *M){

    int x, y;

    x = M->XP;
    y = M->YP;

    if(M->maze[y][x].exit==EXIT){
        return 1;
    }
    if(M->maze[y][x].type==NOGO || M->maze[y][x].visit==VISIT){
        return 0;
    }
    M->maze[y][x].visit = VISIT;
    /* check not on top row */
    if(y!=0){
        M->YP = (y-1);
        if(assign_reachability(&M))
            M->maze[y][x].reach=REACHABLE;
        return 1;
    }
    /* check not on bottom row */
    if(y!=((M->nrows)-1)){
        M->YP = (y+1);
        if(assign_reachability(&M))
            M->maze[y][x].reach=REACHABLE;
        return 1;
    }
    /* check not on left side */
    if(x!=0){
        M->XP = (x-1);
        if(assign_reachability(&M))
            M->maze[y][x].reach=REACHABLE;
        return 1;
    }
    /* check not on right side */
    if(x!=((M->ncolumns)-1)){
        M->XP = (x+1);
        if(assign_reachability(&M))
            M->maze[y][x].reach=REACHABLE;
        return 1;
    }
    return 0;
}

您正在 returning int,但函数 return 类型是 void

I keep getting an error when I try to pass the argument as assign_reachability(&M)

&M的类型是maze_t**,即指向maze_t的指针的地址。该函数期望其参数为 maze_t* 类型,因此您应该像这样传递它:

assign_reachability(M)

因为 M 已经是指向 maze_t

的指针