在研究 c 中的链表时,我遇到了头节点的 2 种不同实现。说如果以下是使用的结构:
struct node
{
int data;
struct node *next;
}
Run Code Online (Sandbox Code Playgroud)
那么第一个实现是头节点只是一个虚拟节点,其中没有实际数据,而只是到另一个节点(第一个实际节点有数据)的链接,如下所示:
struct node *head;
head->next = NULL; //head->next would then be linked to the first node.
Run Code Online (Sandbox Code Playgroud)
第二个实现是头节点是第一个实际节点,其中包含数据,使用 malloc 命令为其分配空间。
我的问题是,在我们完全没有使用 malloc 为 head 分配空间的第一个实现中,我们如何使用“head->next”?因为据我所知(如果我错了,请纠正我),节点的两个字段只能在为该节点分配空间后使用。