我发现了以下用于删除链表第一个节点的代码:
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;
}
有人能解释一下吗:
- 使用临时变量的意义,即我们可以在没有临时变量的情况下使用此代码吗
2.任务head=head->下一步怎么做?
磁头和温度之间的关系是什么,即温度是指向磁头的指针吗?
head是否也是指向链表第一个节点的指针?
若第三部分和第四部分的答案都是肯定的,那个么temp不是变成了一个双指针(指向指针的指针(吗?
-
需要
temp
指针,因为在重新分配head
后,需要使用delete
释放链表中第一个节点的内存。这样可以在调用函数时防止内存泄漏。 -
分配
head = head->next
在删除第一个节点之前将链表的开头移动到第二个节点。 -
分配
Node *temp = head
使temp
指向与head
相同的地址,但在重新分配head
之后(见第2点(,指针不再指向相同的地址。 -
是的,
head
是指向链表开头的指针。 -
temp
从来都不是Node **
类型,但head
被重新分配(见第3点(。