Q
鏈接列表的元素
-1
A
回答
-2
由於它是一個LinkedList,所以直到第一次(也是唯一一次)通過之後,您將無法找到它的大小。要找到中間元素,你需要知道兩件事情;中間的索引是什麼,該索引處的元素的值是多少。找到中間索引是很容易的 - 只需在列表中通過一次,就可以計算出有多少個節點。當你這樣做時,你需要跟蹤單獨數據結構中的每個元素,可能是一個ArrayList,因爲你只允許一個通過LinkedList傳遞。完成後,計數器的一半找到中間索引,然後返回該索引處的ArrayList元素。
僞代碼如下所示:
int count
ArrayList elements
for each node in LinkedList:
count++
elements.append(node)
middleIndex = count/2
middleElement = elements.getIndex(middleIndex)
return middleElement
當然,你需要採取了這樣的情況,其中沒有一個單一的中間元素。
2
LinkedList<String> list = new LinkedList<>();
list.add("foo");
list.add("bar");
list.add("baz");
String middle = list.get(list.size()/2);
System.out.println(middle); // bar
分配middle
的get
通話期間將通過列表的一半呼叫。
正如在評論中指出的那樣,中間是在LinkedList
上操作的最差的地方。考慮使用另一種變體,如ArrayList
。
0
我認爲這是一個你可能在面試問題列表中看到的一種詭計問題。
一個解決方案是使用兩個指針來遍歷列表,一個採取兩個步驟,一個採取一個步驟。
當每次兩步走的指針到達列表的末尾時,只走一步的指針會到達一半。
我懷疑這種做法是否真的有用,雖然..
祝你好運!
相關問題
- 1. 鏈接列表頭元素
- 2. 比較鏈接列表中的元素
- 3. 鏈接列表中的排序元素
- 4. C#列表中的鏈接元素
- 5. 打印鏈接列表中的元素
- 6. 鏈接列表中的交換元素
- 7. 刪除鏈接的列表元素
- 8. 刪除鏈接列表中的元素
- 9. 從鏈接列表中刪除元素
- 10. 將元素添加到鏈接列表?
- 11. 從鏈接列表中刪除元素
- 12. 從鏈接列表中刪除元素
- 13. 將元素插入到鏈接列表
- 14. 在鏈接列表中插入元素
- 15. 將元素添加到鏈接列表中的鏈接列表中C
- 16. 鏈接列表,通過返回新列表刪除元素
- 17. 將元素列表添加到鏈接列表
- 18. 用其他元素替換元素中的鏈接鏈接
- 19. 鏈接列表的鏈接列表
- 20. 連接列表元素
- 21. 找到指向鏈接列表中的元素的指針c
- 22. 從排序的鏈接列表中刪除重複的元素
- 23. 訪問鏈接列表中的對象的元素
- 24. 檢索鏈接列表中的指針元素的數據
- 25. 鏈接列表的一個節點中的三個元素
- 26. Python的拉鍊單列表元素
- 27. 打印元素兩個鏈接列表表現怪異
- 28. jquery mobile - 鏈接元素內部的表單元素
- 29. 如何反轉鏈接列表中的每個k元素?
- 30. 在單個鏈接列表的末尾插入元素
我想谷歌沒有答案,因爲這個問題是微不足道的。列表有一個'get(int position)'。另外,如果你在中間運行,你不想使用LinkedList。 – Felk 2014-10-16 23:51:53