我已經看到很多鏈接列表在頭部添加的實現,然後更新頭部引用或者不修改頭部引用,並且每次都在尾部添加更新。一個和另一個有明顯的好處嗎?哪一個是實施的首選方式?鏈接列表的實現,在頭部添加還是在尾部添加?
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