gpt4 book ai didi

c - 与用户创建的结构不兼容的类型

转载 作者:行者123 更新时间:2023-11-30 14:23:07 26 4
gpt4 key购买 nike

Possible Duplicate:
“Assignment from incompatible pointer type” warning

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

这是我的结构:

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
}
}

我认为一旦在我的结构中声明,我就可以利用这样的赋值?

最佳答案

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

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

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

希望这有帮助!

关于c - 与用户创建的结构不兼容的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13189175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com