是否可以指向另一个节点中的节点:
struct Node{
Node my_Node;
Node *next;
};
int main(){
Node *practice = new Node;
practice -> next = &(practice -> my_Node);
return 0;
}
struct Node{
Node my_Node; // this is not allowed
Node *next;
};
因为在c或c++中不允许创建不完整类型的变量。因为在这一点上,编译器不知道Node
类型是什么以及需要多少空间?
您不能在Node
中声明Node
,首先它在该点上是一个不完整类型,其次它需要无限的空间来允许这一点(因为节点必须包含一个必须包含节点的节点等等…),这是不可能的。另一方面,您可以在Node
中拥有一个Node *
。