0

重複の可能性:
「互換性のないポインター型からの代入」警告

私には 2 つの構造があり、一方は他方から構築されます。私の希望は、それらを一緒に使用して、有向加重グラフの隣接リストを作成することです。

ここに私の構造があります:

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

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

そのため、adjEdge 構造関数である別の頂点への接続がない限り、基本的に頂点 adj は null になります。

私の問題は、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 に答える