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