Helpers - компьютеры, интернет, программирование

Рекурсивное добавление узла в конец связанного списка

Я пытаюсь рекурсивно добавить элемент в конец связанного списка. Однако ничего не добавляется. Я использую частный вспомогательный метод, поэтому я могу использовать ссылку в качестве параметра. Я не сталкиваюсь с какими-либо исключениями, однако мои тестовые примеры показывают, что в список вообще ничего не добавлено! Я понятия не имею, что я делаю неправильно, и понятия не имею, с чего начать. Ваша помощь очень ценится.

public void addLast(E element) {
    addLast(element,first);
}

private void addLast(E element, Node ref) {
    if (ref == null) {
        ref = new Node(element);
        n++;
            } else if (ref.next == null) {
                    ref.next = new Node(element);
                    n++;
    } else {
        addLast(element, ref.next);
    }
}

  • Прежде всего, что такое n? Ваша проблема в том, что список всегда пуст? Если да, попробуйте изменить «ref = new Node(element)» в первом блоке if на first = new Node(element), где «first» — указатель на заголовок вашего списка. 02.11.2013
  • Не могли бы вы опубликовать пример, который приводит к пустому LinkedList? 02.11.2013

Ответы:


1

Вы должны сделать что-то вроде этого. Обратитесь к этой ссылке для объяснения.

private Node addLast(E element, Node ref) {
    if (ref == null) {
        ref = new Node(element);

    } else {
        ref.next = addLast(element, ref.next);
    }
    return ref;
}
02.11.2013

2
private void addLast(Node node){

   while(root.next != null){
            root = root.next;

            if (root.next == null){
                root.next = node;
                break;
            }
    }
}

Не рекурсивно, потому что вам это не нужно...

02.11.2013
Новые материалы

Интуитивное понимание тензоров в машинном обучении
Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

Почему объяснимость так важна прямо сейчас?
По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

Анимированный математический анализ
Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

Создание простого слайдера изображений с помощью JavaScript
Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

Создание базы данных с помощью супергероя «Python»
В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

ИИ для чайников: руководство для начинающих по пониманию будущего технологий
Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..