我已经看到很多链接列表在头部添加的实现,然后更新头部引用或者不修改头部引用,并且每次都在尾部添加更新。一个和另一个有明显的好处吗?哪一个是实施的首选方式?链接列表的实现,在头部添加还是在尾部添加?
1
A
回答
1
没有任何好处。事实上,唯一使头部和尾部成为尾巴的是我们称之为头部和尾部。你可以用尾巴代替头部,尾巴用头部代替,而且你会有相同的确切列表,除非它是“倒退”。 (这一点假设一个双向链表...)
这有点像物质和反物质......
0
链表的绝对简单的实现只能(有效),在头部添加。为了添加到尾部,您需要第二个指向当前最后一个元素的指针。
用户可能希望能够添加到任一端,以及能够在常量时间内查询列表长度,并且从尾到头遍历列表(意味着您需要一个双链表),所以一个合理的默认实现应该支持它(就像java.util中的那样)。
如果您能证明有限的功能并获得一些真正的好处(例如尾部共享以降低存储要求),那么您只能使用单链表。 ConcurrentLinkedQueue似乎是单链接的,以允许无锁并发。在Javadocs中提到了无法知道当前长度的权衡。
0
java.util.LinkedList实现了两个功能。它使它成为通用的 - 可以将它用作队列(FIFO)和堆栈(LIFO)
相关问题
- 1. 添加到无锁列表的尾部
- 2. 添加头部PyQt的列表
- 3. 在队列头部添加事件
- 4. 在此底部添加链接代码
- 5. 在APEX 5中添加外部链接?
- 6. 如何用头部/尾部实现克隆链表?
- 7. 在c链接列表的末尾添加节点c
- 8. MVC3 Web Grid在列列表的开头添加操作链接
- 9. mod_rewrite:添加尾部斜杠?
- 10. 添加尾部斜杠URL
- 11. 链接列表,添加节点到列表头添加节点的功能
- 12. 在CRM 4.0的实体视图中添加外部链接
- 13. 添加到链接列表
- 14. 链接列表添加CPP
- 15. 添加链接列表java
- 16. GlassMapper呈现链接添加目标对外部链接
- 17. 如何在列表视图的顶部添加添加数据
- 18. 是否可以在jqgrid的底部添加超链接?
- 19. 在head部分之外添加CSS链接的样式表
- 20. usort覆盖阵列的头部还是尾部?
- 21. JS头部动态添加
- 22. 将链接rel添加到Magento的头部
- 23. ,如何在celltable头部添加一行?
- 24. jQuery将_blank添加到外部链接
- 25. Vim插件,添加外部链接
- 26. 为外部链接添加标签
- 27. 如何在Netty 4中添加头部和尾部分隔符帧解码器?
- 28. 如何将项目添加到链接列表的末尾?
- 29. 将节点添加到链接列表的末尾 - C++
- 30. 将项目添加到链接列表的末尾 - >错误
一个将新节点放在首位,另一个放在尾部。是否有优势取决于你想要新节点的位置。 – 2011-05-02 00:03:24