c - 数组类型具有不完整的元素类型邻接

标签 c arrays adjacency-matrix

我有一些作业,需要编写一个程序,给定一个表示邻接的矩阵。 用户需要将矩阵和索引放入,如果索引的两个值之间存在路径,则程序返回 true。 例如

0 1 2 3 4
1 0 1 0 0
2 0 0 1 0
3 0 0 0 0
4 0 0 0 0

如果用户提供此矩阵(没有索引编号)并给出值 3,1,则它返回 true,因为 3 是 2 的儿子,而 2 是 1 的儿子。但如果用户给出值 4,1,则返回 false。

#include <stdio.h>

#define N 11
#define TRUE 1
#define FALSE 0


int path(long int [][20] A, int u, int v)
{
    if(u == 0 && A[u][v] == TRUE)
        return TRUE;

    if(u == 0 && A[u][v] == FALSE)
        return FALSE;

    if(A[u][v] == FALSE)
        return path(A, u--, v);

    else if(A[u][v] == TRUE)
        return path(A, N, u);
}

int main()
{
    int arr[11][11]  = {{0,1,1,1,0,0,0,0,0,0,0},
                        {0,0,0,0,1,1,1,1,1,0,0},
                        {0,0,0,0,0,0,0,0,0,1,0},
                        {0,0,0,0,0,0,0,0,0,0,1},
                        {0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0},
                        {0,0,0,0,0,0,0,0,0,0,0}};

    return path(arr,1,8);
    return 0;
}

当我尝试在 gcc 上运行它时,它返回:

adjacency.c:8:26: error: expected ‘;’, ‘,’ or ‘)’ before ‘A’ adjacency.c: In function ‘main’: adjacency.c:30:1: warning: implicit declaration of function ‘path’ [-Wimplicit-function-declaration]

谁能告诉我为什么?如果我的程序能正常工作?? 谢谢大家

最佳答案

函数原型(prototype)与数组大小不匹配。

尝试改变

int path(long int [][20] A, int u, int v)

进入

int path(long int A[][11], int u, int v)   // Move A

主要变化

 int arr[11][11] 

 long int arr[11][11] 

或者在函数中删除 long

int path(int A[][11], int u, int v)

顺便说一句:

return path(A, N, u);

可能不好,因为 N=11。您将在数组外部建立索引。

也许你想要

return path(A, N-1, u);

而不是避免索引超出范围的数组。

重要提示:

return path(A, u--, v);

可能需要:

return path(A, --u, v);

因为 u-- 是后递减。你将有一个无限循环,一次又一次地使用相同的值调用 path(..)。

您希望它在函数调用之前递减。所以使用 --u 因为它是一个预递减。

关于c - 数组类型具有不完整的元素类型邻接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29864537/

相关文章:

c - 在用 C 语言编写的 shell 中,history 命令如何仅将 unix 命令发送到历史文件

c - 指定线程访问数组中的哪些位置

使用头文件编译

python - 如何获取列表中所有元素的日志

javascript - 如何从不包含搜索关键字的字符串数组中删除字符串?

python - 如何有效地将由节点标识符组成的边列表转换为包含行和列索引的边列表?

我可以在不为其中一个参数指定类型的情况下声明一个函数吗?

javascript - AsyncStorage React Native 保存数组

c++ - 来自梯度图像的邻接矩阵

python - 对我来说渲染(或以任何方式以图形方式表示)邻接矩阵的最简单方法是什么