#java #linked-list #singly-linked-list
#java #связанный список #односвязный список
Вопрос:
Итак, я пытаюсь создать метод, который вставляет узел в предпоследнюю позицию связанного списка.
Например, я хочу поместить 2 в предпоследнюю позицию моего списка [1,2,3], так что мой список теперь будет [1,2,2,3]
Я попробовал следующий код, но, похоже, он не работает.
public void addSecondToLast(int data){
Node node = new Node();
node.data = data;
node.next = null;
if(top == null){
node = top;
}
if(top.next == null){
node = top.next;
}
else {
Node temp = new Node();
Node prev = new Node();
temp = top;
while(temp.next != null){
prev = temp;
temp = temp.next;
}
prev = node;
node.next = temp;
}
Ответ №1:
В инструкции else, где вы назначаете prev = node , это должно быть prev.next = node , поскольку prev является предпоследним текущим, теперь узел займет свое место, поэтому укажите prev на node и присоедините node к последнему узлу связанного списка. Попробуйте это, это должно сработать.
первый-> предыдущий-> последний, теперь ваш новый узел должен находиться между предыдущим и последним, поэтому первый-> предыдущий-> узел-> последний