单向链表删除节点
来源:互联网 发布:public cms官网 编辑:程序博客网 时间:2024/05/16 10:39
单向链表删除节点的一个技巧,这个是在《编程之美》上面看到的,可以用来对付一些算法题。
************************************************************************
有时候会遇到这种情况,单链表提供一个指针,要求要删除指针指向的节点。如下
考虑到释放内存,还再需要一个指针
************************************************************************
我们具体一下,有这么一个单向链表,这个链表的节点比较简单,【数据域只有一个整型】,并且当前的指针【iter不是头指针】,我们被要求删除这个指针指向的节点。
我们再标注一下
好了,因为指针指向的节点是需要删除的,所以其他节点都是‘好’的。
因为是单向链表,所以我们取不到iter指针的前一个节点的指针(非要取的话,效率可能堪忧)。所以只有这个iter指针,删除iter指针指向的节点是比较困难的,但是相对的,删除iter后面的节点是很简单的。
为了做好删除工作,我们只需要把【iter指针指向的节点的后续节点的数据域】复制到【iter指针指向的节点中】这时候,链表变成这样子。换句话说,删除iter或者删除iter_free所得到的结果都是正确结果了。前面说了,删除iter所指还是比较麻烦的,那就删除iter_free所指不就好了。
实现起来不难。实质就是用复制操作来取代指针操作,可能就需要稍微权衡一下这两种操作的代价以及深复制浅复制问题,对于节点不是很复杂的链表,这个方法还是很赞的。
0 0
- 单向链表删除节点
- 单向链表删除节点
- 单向链表删除节点
- 单向链表删除节点
- 删除单向链表的部分节点
- 单向链表的节点删除
- 删除单向链表中的节点
- 删除单向链表中的某一个节点
- C++单向链表之删除节点
- 删除单向链表中的某一个节点
- 实现单向链表节点删除
- 删除单向链表中的某个节点
- 删除单向链表的指定节点
- 单向链表--初始化、添加删除节点、排序链表
- 利用二级指针删除单向链表节点
- 单向链表(二) 删除指定位置的节点
- 删除单向链表倒数第n个节点
- 单向链表在O(1)时间内删除一个节点
- 【C++】编写一个智能指针类。
- android rom制作之bootimg的详细介绍和使用
- java制作的亲戚计算器(三姑六婆计算器)
- iOS开发之autoLayout constraint
- hdu 5305 friends
- 单向链表删除节点
- jsp获取Request请求参数
- 解决本地打开Android API文档缓慢的问题
- 2012年5月SAT香港真题解析
- go语言学习笔记
- 过河卒(动态规划)
- php实现Bloom Filter
- iOS开发系列--视图切换
- vs project properties配置