Как мне установить элемент в списке без использования методов LinkedList

#java #list #linked-list

#java #Список #связанный список

Вопрос:

В качестве домашней работы я работаю над написанием класса LinkedList, который заменяет методы LinkedList. Я работаю над методом «set».

Вот что у меня есть на данный момент для метода set (). Он принимает int index и X item в качестве параметров. Заголовок узла находится в переменной с именем first . (Весь класс является обобщенным.)

 Node<X> p = new Node<X>();
if(index < 0 || index > size()-1){
    throw new Bonfire();
}
int count = 0;
while(count != index){
    p = p.next;
    count  ;
}
if(count == index){
    p.item = item;
}
  

Класс узла:

 public class Node<T>
{
    T item;
    Node<T> next;
}
  

Когда я запускаю свой код с некоторым тестовым кодом, который у меня есть, он не проходит тест.

Тестовый код:

 LList<String> b = new LList<String>();
b.add("Hello");
b.add("Bye");
b.set(0, "Bonjour");
assertEquals("Bonjour", b.get(0));
  

Причина неудачного теста: org.junit.ComparisonFailure: expected:<[Bonjour]> but was:<[Hello]>

(методы add(), size() и get() работают корректно.)

Итак, мой вопрос в том, как мне заставить это правильно установить элемент? Из этого кода и из-за того, почему он не проходит тест, похоже, что он вообще ничего не устанавливает. Если вам нужна какая-либо дополнительная информация от меня, не стесняйтесь спрашивать меня. Ценю помощь. Спасибо!

Комментарии:

1. Есть ли причина, по которой вы создаете новый Node ? Разве у вас заголовок не хранится в поле?

2. В других моих методах я никогда не использовал head.

3. Ну, вы, похоже, просто создаете новый, Node у которого не будет ссылок ни на какие другие Node файлы. Есть ли в вашем классе какие-либо поля?

4. Я на самом деле забыл, что создал первую и последнюю переменные для первой и последней частей списка, в том числе в add() методе.

5. Да, я предположил, что это была ваша проблема.

Ответ №1:

Все, что мне нужно было сделать, это изменить, Node<X> p чтобы сделать это Node<X> p = first; .