我正在使用单向链表实现堆栈,其中 Head 位于堆栈顶部,Tail 位于堆栈底部。
我正在执行弹出操作。为此,我必须使头部等于链表中的第二个节点。但是在我这样做之前,我需要先删除链表中的第一个节点。我可以使用 delete head->next;
来做到这一点。
我的问题是,如果我删除了第一个节点,我还能用它移动到下一个节点吗?或者使用已调用 delete
的节点的引用是不好的做法。这是我想用来实现 pop 的代码。
delete head->next;
head->next = head->next->next;
最佳答案
如果你这样做:
删除head->next;
那么head->next
是无效的。如果您尝试在下一行取消引用它(请记住右侧将在赋值之前计算),您的程序将会崩溃。
head->next = head->next->!next;//错误指针的取消引用发生在我放置 ! 的位置,而你在那里崩溃了。
如果你想删除 head->next
处的对象,你需要先将其保存。
p = head->next;
head->next = head->next->next;
delete p;
关于c++ - 从链表的开头删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31096830/