如何从线性链表c++中删除第二个节点



这个编码是为了删除第一个节点,但我想如果我学会了删除第二个,我就会知道如何删除第一个,所以下面是我删除第一个的步骤,它现在将值替换为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;
}

注意:在上述两种情况下,都会创建一个临时指针,指向要删除的节点。这是必需的,因为当链接被更改时,节点将无法访问,并产生内存泄漏。临时指针允许在链接更改后删除节点。

最新更新