我有两个结构,一个构建另一个结构。我希望一起使用它们来创建有向加权图的邻接列表。
以下是我的结构:
typedef struct{
int v;
int edgeWeight;
struct adjEdge * next;
}adjEdge;
typedef struct{
int v;
int weight;
struct adjEdge *adj;
}vertex;
所以基本上顶点adj将为null,除非与另一个顶点有连接,这是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
}
}
我以为曾经在我的结构中宣称我可以利用这样的作业吗?
答案 0 :(得分:2)
问题在于您定义结构的方式。按如下方式定义它们并删除警告。
typedef struct adjEdge_{
int v;
int edgeWeight;
struct adjEdge_ * next;
}adjEdge;
typedef struct vertex_{
int v;
int weight;
struct adjEdge_ *adj;
}vertex;
希望这有帮助!