Я пытаюсь создать метод, который добавляет int в конец существующего связанного списка.Прокрутка связанного списка
Q: Написать метод, который принимает главу списка, который не является сторожевым узлом, и ИНТ
n
. Метод должен перемещать первые n узлов в конец списка, сохраняя их в том же порядке. Например, если у вас есть список[1, 3, 5, 7, 9]
иn = 3
, ваш метод должен вернуть список:[7, 9, 1, 3, 5]
(вернуть голову измененный список).
Вот что у меня есть, речь идет о методе addLast:
public class ListItem{
public int value;
public ListItem next;
public ListItem(int value, ListItem next){
this.value = value;
this.next = next;
}
public void addFirst(int x){
head = new ListItem(x, head);
size++
}
public void addLast(int x){
if(head == null){
addFirst(x);
}
else{
ListItem p;
for(p = head; p != null; p = p.next){
p.next = new ListItem(x, null);
size++;
}
}
}
Я немного запутался, как метод перебирает список. В цикле for он начинается в начале и прокручивается до тех пор, пока не будет p.next. Но метод внутри выглядит так, что он заменяет каждый p.next новым элементом списка, а не прокручивается до конца. Какая часть кода объясняет, как он пропускает, не добавляя новый элемент в каждом месте в существующем списке?
Где вы определяете элемент 'head'? –
Я верю в метод addFirst? Если я не испортил его, и определение в этом методе не переносит его вниз –