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. C#列表中的鏈接元素
- 4. 刪除鏈接列表中的元素
- 5. 將元素插入到鏈接列表
- 6. 從鏈接列表中刪除元素
- 7. 從鏈接列表中刪除元素
- 8. 在鏈接列表中插入元素
- 9. 將元素添加到鏈接列表中的鏈接列表中C
- 10. 將元素列表添加到鏈接列表
- 11. 鏈接列表,通過返回新列表刪除元素
- 12. 連接列表元素
- 13. 檢索鏈接列表中的指針元素的數據
- 14. 找到指向鏈接列表中的元素的指針c
- 15. 鏈接列表的一個節點中的三個元素
- 16. 從排序的鏈接列表中刪除重複的元素
- 17. jquery mobile - 鏈接元素內部的表單元素
- 18. 找到第k個鏈接列表的最後一個元素
- 19. 在單個鏈接列表的末尾插入元素
- 20. 元素「看起來像」子彈點列表的錨鏈接
- 21. 如何通過遞歸添加鏈接列表中的元素?
- 22. 通過使用memcmp刪除鏈接列表的元素
- 23. 如何將元素添加到已排序的鏈接列表?
- 24. GDB命令訪問鏈接列表中的特定元素?
- 25. 交換鏈接列表中的元素而無法訪問它?
- 26. 在減去鏈接列表元素時的分段錯誤
- 27. 使用樹中的元素初始化鏈接列表設置
- 28. 切換鏈接列表中的兩個元素
- 29. 如何訪問鏈接列表的元素?
- 30. 鏈接列表 - 刪除索引處的元素
我想谷歌沒有答案,因爲這個問題是微不足道的。列表有一個'get(int position)'。另外,如果你在中間運行,你不想使用LinkedList。 – Felk 2014-10-16 23:51:53