【发布时间】:2016-06-02 15:25:14
【问题描述】:
我正在为我的 Uni 做一个 Linked List 实现,我在我们的演示文稿中遇到了这段代码。
template <class X> bool linkedList<X>::deleteElement(node<X> *p)
if (p=NULL)
return false;
if(p->next!=NULL)
p->next->prev = p->prev;
if(p->prev!=NULL)
p->prev->next = p->next;
else
head = p->next
我想知道 p->next->prev = p->prev; 部分是否与 p = p->prev; 相同,因为 p 的下一个的前一个是 p 本身。
提前感谢您的任何回答。
编辑 1:修正了一个错字并添加了更多代码以使其更清晰。
【问题讨论】:
-
代码会严重崩溃。如果
p->next是NULL,那么p->next->prev会给你一个空指针异常。代码毫无意义。一定有错别字。 -
如果您绘制方框和箭头的图片,使用指针总是更容易。一直帮助我。
-
@Hogan 我用链表编程语言已经 35 年了。我有时仍然需要绘制这些图表(我本周早些时候在回答另一个问题时做了)。 :)
-
@Barmar 有人说“计算机科学中没有不能用另一层间接解决的问题”我认为说“没有不能解决的问题”更清楚使用另一个框和箭头。”
标签: c++ linked-list