删除线性链表的第一个节点



我发现了以下用于删除链表第一个节点的代码:

Node* removeFirstNode(struct Node* head)
{
if (head == NULL)
return NULL;

// Move the head pointer to the next node
Node* temp = head;
head = head->next;

delete temp;

return head;
}

有人能解释一下吗:

  1. 使用临时变量的意义,即我们可以在没有临时变量的情况下使用此代码吗

2.任务head=head->下一步怎么做?

  1. 磁头和温度之间的关系是什么,即温度是指向磁头的指针吗?

  2. head是否也是指向链表第一个节点的指针?

  3. 若第三部分和第四部分的答案都是肯定的,那个么temp不是变成了一个双指针(指向指针的指针(吗?

  1. 需要temp指针,因为在重新分配head后,需要使用delete释放链表中第一个节点的内存。这样可以在调用函数时防止内存泄漏。

  2. 分配head = head->next在删除第一个节点之前将链表的开头移动到第二个节点。

  3. 分配Node *temp = head使temp指向与head相同的地址,但在重新分配head之后(见第2点(,指针不再指向相同的地址。

  4. 是的,head是指向链表开头的指针。

  5. temp从来都不是Node **类型,但head被重新分配(见第3点(。

最新更新