错误:从链接列表中的不兼容指针类型分配

时间:2013-11-08 02:56:12

标签: c pointers singly-linked-list

所以,我正在尝试编写适用于所有类型的通用单链表实现,并且不断遇到以下错误: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;和这个:node->next = &newNode;但是你可以想象,它们不起作用,我在这里做错了什么,为什么以及为什么会导致这个错误以及如何修复它?

1 个答案:

答案 0 :(得分: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。

不确定为什么你认为另一条线是问题。事实并非如此。