2015-10-17 9 views
1

Я пытаюсь реализовать Связанный список, встраивая классы, но у меня проблема с вставкой элемента в список. Почему мое решение не работает? Я могу вернуть элемент таким образом, используя get(), но я не могу вставить его, как только мой итератор достигнет места назначения.Java/Implementing LinkedList

public void insert(int index, int value) { 

    Node iterator = head; 

    int i=0; 
    while(iterator != null) { 

     if(i++ == index) { 

      iterator = new Node(value, iterator); 
      return; 

     } else { 

      iterator = iterator.next; 

     } 

    }  

} 

ответ

0

Ваша iterator является временной переменной в этом вызове функции. Когда вы переназначаете ссылку на другой объект, вы фактически не изменяете Linked-List за пределами этой области функций. Вместо этого вы должны использовать следующую

if(i++ == index) { 
    iterator.next = new Node(value, iterator); 
    return; 
} 

Обратите внимание на iterator.next вместо того, чтобы просто переназначение итератора. Таким образом вы будете модифицировать Linked-List, как вы намереваетесь, вместо того, чтобы просто изменять локальную переменную, которая выпадет из области действия после завершения вызова функции.

+0

Это не работает. Например, я добавляю 1 2 3 4 и вставляю (1, 10) мой вывод: 1, 2, 10, 2, 10, 2 ..... –

+0

Вы делаете несколько звонков? или просто один вызов 'insert' и приводит к нескольким 2s и 10s. Поскольку модификация добавляет к iterator.next, вы можете изменить оператор if из 'if (i ++ == index)' to 'if (++ i == index)' –

+0

Я использую «получает», как get (0 ... n) и только одна вставка() –