C - 指针问题

时间:2015-04-26 16:34:01

标签: c arrays pointers

我是C的新手,知道一些Java。 尝试编写一个接受表示有向邻接矩阵的2D数组的程序,以及两个数字,扫描数组并返回true,如果它们之间存在有向路径(自上而下)。

我遇到了C实现的问题。显然我必须使用指向数组中值的指针,而在Java中,我可以使用数组中的值(比较,返回函数等)。

我很确定逻辑已经存在,我只需要帮助在正确的位置和数量分配'*。

以下是代码:

#include <stdio.h>

#define N 12

typedef int bool;
enum {false, true};

typedef struct adj_mat{
    int A [N][N];
}adj_mat;



int path(struct adj_mat A, int origin, int dest){
    int i;
    if (origin == dest) return true;
    for (i = 0; i < sizeof(A);i++){
        if (A[origin][i]){
            return path (A, i, dest);
        }
    }
    return false;
}

提前致谢。

2 个答案:

答案 0 :(得分:2)

for (i = 0; i < sizeof(A);i++){

这应该是for (i = 0; i < N; i++){

此外,您的算法可能无法终止,因为它没有处理图表中的周期。

答案 1 :(得分:0)

sizeof(A)

这可能不会给你你所期望的。它是字节数,而不是元素数。

A[origin][i]

在这里,您尝试索引无效的struct adjmat。您可能想要为成员A编制索引。尝试:

A.A[origin][i]

adj_mat A重命名为其他内容以避免混淆可能是个好主意。

您还应该将A的地址传递给函数,并使用adj_mat*作为参数类型。如果我理解正确,你希望递归操作同一个对象。