Как найти среднее значение или узел из связанного списка в Java? - PullRequest
2 голосов
/ 01 марта 2011

У меня есть 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());...

я получил ответ как этот .... Но руководитель моей команды сказал, чтобы найти по-другому? Есть ли какой-либо другой встроенный метод для итерации в связанном списке? Я пытался ... но я не получить какой-либо встроенный метод для поиска среднего значения ... И или вы можете предложить другую логику, чтобы найти значение среднего узла в списке линке?

спасибо .......

Ответы [ 3 ]

4 голосов
/ 01 марта 2011

Получить 2 ссылки на один и тот же список.

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.
1 голос
/ 01 марта 2011
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 
0 голосов
/ 01 марта 2011

Возможно, руководитель вашей команды предложил вам использовать ArrayList, а не LinkedList.

List<String> list = new ArrayList<String>(50);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...