0

可能重复:
“来自不兼容指针类型的分配”警告

我有两个结构,一个建立在另一个之上。我希望将它们一起使用来为有向加权图创建一个邻接表。

这是我的结构:

typedef struct{
        int v;
        int edgeWeight;
        struct adjEdge * next;
}adjEdge;

typedef struct{
        int v;
        int weight;
        struct  adjEdge *adj;
}vertex;

所以基本上顶点 adj 将是空的,除非有一个连接到另一个顶点,这是 adjEdge 结构函数。

我的问题是,当我将 adjEdge 分配给顶点结构时,出现错误:

bfs.c:75: warning: assignment from incompatible pointer type 

这是代码的一部分。查看它以查看错误实际被抛出的位置

while((fscanf(fp, "%d %d %d", &u, &v, &w)) != EOF)
{
    vertexArray[u-1].v = u;


    adjEdge * newEdge;
    newEdge->v = v;
    newEdge->edgeWeight = w;
    newEdge->next = NULL;

    if(vertexArray[u-1].adj = NULL)
    {
        vertexArray[u-1].adj = newEdge; //error
    }
    else
    {
        adjEdge * traverse = vertexArray[u-1].adj; //error
        while(traverse->next != NULL)
        {
            traverse = traverse->next; //error
        }
        traverse->next = newEdge;  //error
    }
}

我认为一旦在我的结构中声明我可以利用这样的任务?

4

1 回答 1

2

问题在于您定义结构的方式。如下定义它们并消除警告。

typedef struct adjEdge_{
        int v;
        int edgeWeight;
        struct adjEdge_ * next;
}adjEdge;

typedef struct vertex_{
        int v;
        int weight;
        struct  adjEdge_ *adj;
}vertex;

希望这可以帮助!

于 2012-11-02T05:13:54.857 回答