通过递归传递指向结构的指针(迷宫求解)
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
的指针
大家好,我在大学学习计算机 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