如何在java中从链表中找到中间值或节点?

如何在java中从链表中找到中间值或节点?,java,linked-list,Java,Linked List,我在链表中有50个值。如何找到链表的中间值或节点 List list = new LinkedList(); for (int i = 0; i < 50; i++) { list.add(String.valueOf(i)); } int size = list.size(); int middle = (size / 2); System.out.println(list.get(middle).toString());... List List=newlinked

我在链表中有50个值。如何找到链表的中间值或节点

List list = new LinkedList();
    for (int i = 0; i < 50; i++) {
    list.add(String.valueOf(i));
}

int size = list.size();
int middle = (size / 2);
System.out.println(list.get(middle).toString());...
List List=newlinkedlist();
对于(int i=0;i<50;i++){
list.add(String.valueOf(i));
}
int size=list.size();
int中间=(大小/2);
System.out.println(list.get(middle.toString());。。。
我得到了这样的答案。。。。 但我的队长说要用另一种方式找到? 在链表中有没有其他内置的迭代方法?我试过了…但我没有找到任何内置的方法来寻找中间值…而且 或者你们中的任何一个可以建议另一种逻辑来查找链接列表中中间节点的值吗


谢谢……

获取同一列表的两个参考

In a single loop:
Advance the 1st list 2 nodes at a time.
Advance the 2nd list 1 node at a time.
Loop until the 1st loop reaches the end.

也许你的团队领导建议你使用ArrayList而不是LinkedList

List<String> list = new ArrayList<String>(50);
List List=newarraylist(50);
列表列表=新建链接列表();
对于(int i=0;i<50;i++){
list.add(String.valueOf(i));
}
int end=list.size()-1;
int start=0;
while(开始>结束){
启动++;
结束--;
}
if(start==end)//数组长度是一个奇数,您可以找到中间值
返回启动;
否则//数组长度是偶数,实际上没有中间值
//在这里做些别的事情,因为你有一个偶数

这种方法的一个问题是,如果列表的大小是奇数,则无法获得中间节点。示例:如果大小为3,则中间节点将为1。修复它就像int middle=size/2+size%2。但我不认为这是你的团队领导所指的。对不起……你曾经说过“好”吗……但是我的团队领导说“不”,必须尝试寻找另一种不分割的逻辑,如大小……是否存在?问题不清楚当列表长度为偶数时,“中间”是什么。这很奇怪,为什么你不简单地使用list.size()确定中间点?这对你的答案的速度和复杂度没有任何影响。对不起,我听不懂你的话。如果你不介意的话,请你再简单地解释一下好吗?你可以看到。你有我的答案中的伪代码,你应该自己实现它。
List list = new LinkedList();
    for (int i = 0; i < 50; i++) {
    list.add(String.valueOf(i));
}

int end = list.size() - 1;
int start = 0;
while (start > end) {
    start++;
    end--;
}
if(start == end) //The arrays length is an odd number and you found the middle
    return start;
else //The arrays length is an even number and there really isn't a middle
    //Do something else here because you have an even number