I was wondering if the p->next->prev = p->prev; part is the same as saying p = p->prev

不它不是.它正在设置列表中p节点之后的下一个节点的prev字段.

代码正从列表中删除p节点.需要更新p节点两侧的两个周围节点以停止指向p节点,而是指向彼此.你展示的只是必要更新的一半.你需要添加另一半:if(p-> prev!= NULL)p-> prev-> next = p-> next;.您还需要检查p是否指向列表的头节点,如果是,则将头部更新为指向p->.与列表的尾节点(如果有)一样,指向p-> prev.

此外,代码中的if(p = NULL)是错误的,它应该是if(p == NULL).而代码中的if(p-> next == NULL)也是错误的,它应该是if(p-> next; = NULL).

这是正确的实现:

template bool linkedList::deleteElement(node *p)

{

if (p == NULL)

return false;

if (p->next != NULL)

p->next->prev = p->prev;

if (p->prev != NULL)

p->prev->next = p->next;

if (p == head)

head = p->next;

// if your list has a tail:

if (p == tail)

tail = p->prev;

// if your list owns the memory for the nodes:

delete p; // or however you free it

return true;

}

最后,您应该考虑使用STL std::list容器而不是手动实现.

c语言中p-next,c – p- next- prev与p相同吗?相关推荐

  1. c语言中struct和c++中class实例对比

    前言 实现游戏中简单的打怪升级的功能 c语言中的struct #include <stdio.h>typedef void(*Train)(struct player*, int); ty ...

  2. 关于C语言中printf函数“输出歧视”的问题

    目录 关于C语言中printf函数"输出歧视"的问题 问题描述 探索问题原因 另一种研究方法 问题结论 关于C语言中printf函数"输出歧视"的问题 问题描述 ...

  3. C语言中“野指针”、“悬空指针”是什么?

    目录 1."野指针"(wild pointer) 2."悬空指针"(dangling pointer) 1."野指针"(wild point ...

  4. c+语言+null,C/C++语言中NULL、'\0’和0的区别

    NULL.'\0'和0的值是一样的,都是0,不过它们的表现形式不一样: 1. NULL: 即空指针,不过在C和C++中并不一样.在VS 2013的库文件string.h中可以看到如果定义. 1 /* ...

  5. 关于C语言中的malloc和free函数的用法

    一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...

  6. python global函数_如何使用python语言中的global关键字获取函数值

    在python语言中,如果在函数外层定义了一个全局变量a,函数内部又有一个同名的局部变量,想要这个全局变量的值改成为局部变量的值,可以使用global.下面利用一个实例说明如何实现这个场景,操作如下: ...

  7. c语言中的if语句_If ... C中的其他语句解释

    c语言中的if语句 Conditional code flow is the ability to change the way a piece of code behaves based on ce ...

  8. C 语言中 void* 详解及应用介绍

    void 在英文中作为名词的解释为 "空虚.空间.空隙",而在 C 语言中,void 被翻译为"无类型",相应的void * 为"无类型指针" ...

  9. java 英文字符 字节_3、在JAVA语言中,每个英文字符占 个字节,每个中文汉字占( )个字节。...

    [判断题]中心原子中的几个原子轨道杂化时,必形成数目相同的杂化轨道. [单选题]集合 用区间表示正确的是 ( ) [单选题]15.Java语言的类间的继承关系是 [单选题]8.编译Java Appli ...

  10. 8位alu运算器(vhdl语言)_C语言中signed char类型,能表示-128到127,为什么负数多一位?...

    初学者在学习C语言,谈到不同数据类型时,一般都能理解 unsigned 和 signed 的区别,无非就是有无符号而已.但是对于 signed 数据类型的数据范围,初学者却常常会感到迷惑. 对于 si ...

最新文章

  1. poj 3177 Redundant Paths
  2. php新手最容易犯的错误,学习PHP过程中容易犯的一些错误
  3. 被替换的项目不是替换值长度的倍数_面试官,为啥HashMap的长度是2的n次方?
  4. [八省联考2018]劈配 (匈牙利)
  5. 【struts2】预定义拦截器
  6. cglib动态代理导致注解丢失问题及如何修改注解允许被继承
  7. H5 存储数据sessionStorage
  8. 2020.3二级中选择题文件类型题目全套
  9. Html元素~~标签学习
  10. 单片机相关知识点,最强科普总结!
  11. xxnet 360浏览器设置
  12. 绿城离职员工万言书全文
  13. html取消父元素样式,CSS以防止子元素继承父样式
  14. lol人物模型提取(八)
  15. The kernel appears to have died. It will restart automatically
  16. 多个mysql共存_双mysql共存(MySQL8.0与MySQL5.7)
  17. sysdig_Sysdig: 系统故障排查利器
  18. 外网怎么访问公司内网的数据库?
  19. 如何将阿里图标库的引入项目中?
  20. Python绘制TSP、VRP问题求解结果图

热门文章

  1. 苹果六电池_苹果官网上架新品,18999元起~
  2. 诺禾-心源性猝死基因分型研究
  3. win10设置默认浏览器
  4. 在Windows设置里改不了默认浏览器
  5. IntelliJ IDEA for Mac 2018.1.2 智能Java IDE开发工具 破解版下载
  6. linux LTP移植Android,LTP(Linux Test Project) for Android的编译
  7. Word 自动编号时设置一级标题为“第一章”,二级标题为“1.1”
  8. 公开预算 publicize budget
  9. 吉林警察学院计算机录取分,2017年吉林警察学院录取分数线
  10. unreal 虚幻引擎学习资料