#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;
.