c++ - p->next->prev 和 p 一样吗?

标签 c++ linked-list

我正在为我的 Uni 实现链表,我在我们的演示文稿中看到了这段代码。

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 是局部变量。 p->next->prevp->next 上的一个实例变量。改变前者根本不会影响结构,而改变后者会。换句话说,它们的可能相同,但是存储这些值的内存地址不同。

关于c++ - p->next->prev 和 p 一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37596049/

相关文章:

java - 从 Java 端访问数组

c++ - 为什么赋值运算符用于深拷贝以及谁调用它

c - c中的链表插入: inserting wrong values

c - 快速随机访问链表节点

java - 尝试将 ArrayList 转换为 LinkedList。不知道为什么这不起作用

c - 链表程序未给出预期结果

c++ - 如何使用运算符<<获取在ostream中写入了多少个字符?或者如何阅读所写的内容?

c++ - 无法从 'Node<T> *' 推断出 'int' 的模板参数

java - 通用链表删除、大小、获取方法

c++ - 带有引用计数器的对象缓存