所以,我正在尝试编写适用于所有类型的通用单链表实现,并且不断遇到以下错误: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;
但是你可以想象,它们不起作用,我在这里做错了什么,为什么以及为什么会导致这个错误以及如何修复它?
答案 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。
不确定为什么你认为另一条线是问题。事实并非如此。