0

SO、私はすべてのタイプで動作する一般的な単一リンクリストの実装を作成しようとしていますAssignment from incompatible pointer typeが、次のコード行で次のエラーに遭遇し続けています:

node->next = newNode;

これは、次の宣言と構造体のコンテキストにあります。

typedef struct{
    void* data; // The generic pointer to the data in the node.
    Node* next; // A pointer to the next Node in the list.
} Node;

void insertAfter(Node* node, Node* newNode){
    // We first want to reassign the target of node to newNode
    newNode->next = node->next;
    // Then assign the target of node to point to newNode
    node->next = newNode;
}

node->next = *newNode;私は this:と this:の両方を使用しようとしましたnode->next = &newNode;が、ご想像のとおり、それらは機能しません。ここで何が間違っているのでしょうか。このエラーの原因とその理由は何ですか?どうすれば修正できますか?

4

1 に答える 1

1

構造体の定義を次から変更します

typedef struct{
    void* data; // The generic pointer to the data in the node.
    Node* next; // A pointer to the next Node in the list.
} Node;

typedef struct Node Node;
struct Node {
    void* data; // The generic pointer to the data in the node.
    Node* next; // A pointer to the next Node in the list.
};

理由は、typedef が完了するまで構造体内で typedef を参照できないためです。

他の行が問題だと思った理由がわかりません。そうではありませんでした。

于 2013-11-08T02:59:34.627 に答える