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