-1

假设我有一个双向链表,它有一个指向名为“first”的第一个节点的指针。现在假设我想为这个双向链表创建一个删除“第一个”节点的函数(假设该函数完成了第二张图片中所做的事情;即,一个新的指针节点已被声明为先前的第一个和第一个已迭代一次)。现在我的问题是:如果我先删除新的,那么第一个的 PREV 现在是否指向 NULL?如果不是,它指向什么?本质上,我想知道是否需要明确定义 first->PREV = NULL 或者删除新的 first 是否会完成相同的任务。

注意:如果不清楚,向上箭头用于 PREV,向下箭头用于 NEXT。

在此处输入图像描述

4

2 回答 2

2

你需要明确地做到这一点。当你释放一个对象时,指向它的指针不会被重置为空;他们被悬空了。

于 2012-12-01T12:21:02.160 回答
2

当您调用 delete 时,您只需释放该内存,如果指针指向该内存区域,它不会改变它的值。
因此,在删除节点的函数中,您还必须将指向已删除区域的指针设置为 NULL(或 nullptr)。

于 2012-12-01T12:24:07.977 回答