这个编码是为了删除第一个节点,但我想如果我学会了删除第二个,我就会知道如何删除第一个,所以下面是我删除第一个的步骤,它现在将值替换为0。
void removeFirst ( node * head)
{
node * temp = head;
head = head -> next;
delete temp;
您应该在您喜欢的数据结构书中查找链表。假设head
指向列表的开头,并且每个节点都有一个next
字段。
// Get the pointer to the second node.
Node * p_second_node = head->next;
// Copy the second node's link to the head node's link:
if (p_second_node)
{
head->next = p_second_node->next;
}
// Finally, delete the second node:
delete p_second_node;
您应该始终检查指向第二个节点的指针是否为nullptr
。延迟NULL指针是未定义的行为。
编辑1-删除第一个节点
以下是删除第一个头节点的步骤:
Node * p_first_node = head;
if (head)
{
head = p_first_node->next;
delete p_first_node;
}
注意:在上述两种情况下,都会创建一个临时指针,指向要删除的节点。这是必需的,因为当链接被更改时,节点将无法访问,并产生内存泄漏。临时指针允许在链接更改后删除节点。