【发布时间】:2012-10-22 18:06:40
【问题描述】:
我有两个结构,一个建立在另一个之上。我希望将它们一起用于为有向加权图创建邻接表。
这是我的结构:
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{.....}Edge;之类的东西,然后在其他结构中你应该使用Edge *adj;之类的东西 -
我在想这就是我所做的......?
-
This 我猜可能会有所帮助...
-
@ZAX:你在做
typedef struct { ... } adjEdge。建议是typedef struct adjEdge { ... } adjEdge。 -
@sharth 感谢您的澄清!它成功了!
标签: c pointers data-structures error-handling typedef