狸猫换太子--删除无头单链表中结点
来源:互联网 发布:跑腿软件排名 编辑:程序博客网 时间:2024/05/16 18:12
狸猫换太子–删除无头单链表中结点
@(算法学习)
学习自《编程之美》。
很有意思的一种做法。
给定一个没有头指针的单链表,一个指针指向次单链表中的一个中间结点,删除此结点。
分析:这种根本没法找到前驱的情况下,如何变通删除呢?既然每个结点只是内容不一样,但是形式相同,是否可以考虑鸠占鹊巢,狸猫换太子呢?
当前结点内容更换为后面结点的内容,从内存中删除后继结点,这样,可以保证链表依旧相连,内容恰好是删除当前结点要得到的结果。不编号看待结点,谁又能看得出来我们干了什么呢。
核心代码:
pCurrent->next = pNext->next; //将当前结点指针指向后继的后继pCurrent->data = pNext->data;//当前结点内容换成后继结点delete pNext;
三行代码,一行剥夺后继结点的关系,一行取出后继结点的值,最后一行删掉后继结点,已经没有价值了。
残酷。
1 0
- 狸猫换太子--删除无头单链表中结点
- 搜索二叉树---之狸猫换太子的删除方法
- Linux Tips 之 狸猫换太子:LD_PRELOAD
- 狸猫换太子:动态替换WinCE的原生驱动!
- Python mock测试static 方法——狸猫换太子
- 设计模式六大原则: 狸猫换太子 -- 里氏替换原则
- Maven2上演狸猫换太子――字符编码造成的诡异故障
- 关于Python中的单元测试,步步惊心续集之怎样狸猫换太子?!
- 第五篇:设计模式六大原则: 狸猫换太子 -- 里氏替换原则
- 编程之美-从无头单链表中删除结点
- 【编程之美】从无头单链表中删除结点
- 删除子结点
- 删除二叉树结点
- 删除父结点
- 删除相同的结点
- 单链表中删除重复结点
- 单链表结点删除
- 单链表的结点删除
- Java集合框架:常用的增删改查方法
- 软件设计是怎样炼成的(3)——软件系统不是木桶型的
- 学习yacc与lex--计算器实现练习
- checkbox的选中和被选中,Linearlayout点击之后保持点击状态
- VS2013常用快捷键
- 狸猫换太子--删除无头单链表中结点
- STM32控制超声波测距模块HC-SR04
- linux内核下载地址
- oracle表空间增大方法
- 表单验证之BootstrapValidator
- Win10 TensorFlow(gpu)安装详解
- ORA-00600 2662错误
- 如何解决ul中li的边距问题
- 最小的MapReduce驱动