Как добавить узел в предпоследнюю позицию?

#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 к последнему узлу связанного списка. Попробуйте это, это должно сработать.

первый-> предыдущий-> последний, теперь ваш новый узел должен находиться между предыдущим и последним, поэтому первый-> предыдущий-> узел-> последний