当前位置:  开发笔记 > 编程语言 > 正文

LinkedList删除方法

如何解决《LinkedList删除方法》经验,为你挑选了2个好方法。

什么是双向链表的删除方法?



1> CMS..:

与蜥蜴比尔说的算法相同,但以图形方式:-)

从链接列表中删除
(来源:jaffasoft.co.uk)



2> Bill the Liz..:

一般算法如下:

找到要删除的节点.

node.previous.next = node.next

node.next.previous = node.previous

node.previous = null

node.next = null

如果您处于非GC环境中,请处置节点

您必须检查上一个和下一个节点是否为null,以查看是否正在移除头部或尾部,但这些是容易的情况.


我总是使用在列表的开头和结尾有一个sentinal的偷偷摸摸的技巧(所以空列表有两个元素).这使用更多的内存大大简化了我的代码.当然,搜索必须从first-> next开始,到last-> prev结束,但我不必担心边缘情况.
或者将您的列表存储为铃声.只有一个sentinal,它出现在头部和尾部,而一个空列表包含一个元素,两个字段都指向自身.
推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有