LinkedList, ошибка в get или add - PullRequest
0 голосов
/ 04 февраля 2019

Я создаю связанный список и у меня возникают некоторые проблемы либо в get (), либо в add (index, data).Я действительно считаю, что добавление правильно, поэтому я прошу вас найти, что я делаю неправильно в методе get ().Изменить: проблема в том, что я получаю одно и то же значение с индексом 0 и индексом 1.

public T get(int index) {
        int counter = 0;
        Node<T> temp = head;
        if(index < 0 || index > size() || head == null){
            throw new IndexOutOfBoundsException();
        } else {
            if(index == size()){
                temp = tail;
                return temp.data;
            }
            if(index == 0){
                return temp.data;
            }  else {
                while (counter +1 != index){
                    temp = temp.next;
                    counter++;
                }
                return temp.data;
            }
        }
    }

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Ваше состояние в то время как цикл неверен.Вам нужно изменить его на -

while (counter != index){
   temp = temp.next;
   counter++;
}
0 голосов
/ 04 февраля 2019

Представьте, что вы были переданы в index == 1 - вам нужен второй элемент, да?

Однако ваш цикл while никогда не войдет (поскольку counter == 0 означает counter + 1 ==индекс).Поэтому измените цикл while на "while (counter

Вы обнаружите, что вам не нужно явное "if (index == 0)", тогда либо:)

Фактически, этот цикл затем конденсируется в цикл for, так что:

for (int counter=0; counter < index; counter++) {
    temp = temp.next;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...