0

所以,我正在尝试编写一个适用于所有类型的通用单链表实现,并不断遇到以下错误: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;
}

我尝试同时使用 this:node->next = *newNode;和 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 回答