不,它将指向列表的第二个元素(现在是第一个)。
以下是Adam Drozdek的《C++中的数据结构和算法》(第二版)中的单链表实现的代码摘录,该代码涉及删除具有给定值的节点。
IntNode *tmp = head->next;
head = head->next;
delete tmp;
(head在其他地方被定义为IntNode*)这个代码片段中是否有拼写错误,或者我的心理处理器是否不正确,因为每次执行上述代码片段后,head都将是空指针?
当您编写delete tmp
时,您正在删除tmp
指向的对象。但是,删除后的head
仍然会指向相同的位置。取消引用它(*head
)将导致问题,因为head
所指向的对象已被删除。