Рекурсивный конструктор из массива универсальных элементов - PullRequest
1 голос
/ 21 апреля 2019

У меня есть это предложение, где я должен реализовать один класс связанного списка в Java, но он должен быть полностью реализован с помощью рекурсивных функций, даже конструктора.

Конструктор, данный в проекте, предоставленном учителем, получает массив из n общих элементов с 3-точечной нотацией (T ... elements) и немного почесал голову (я никогда не делалрекурсивный конструктор) Я придумал что-то, что явно не работает:

public SingleLinkedListImpl(T ... elements) {
    if(elements.length<=1){
        header = new Node<T>(elements[0]);
    } else {
        addLast(elements[0]);
        elements=Arrays.copyOfRange(elements, 1, elements.length-1);
        this(elements);
    }
}

IDE, с которой я сейчас работаю, говорит, что это невозможно, потому что если я обращаюсь к конструктору с этим внутрисам конструктор ДОЛЖЕН быть первым оператором в функции.

Как мне продолжить работу с этой проблемой?

Кстати: я не могу использовать что-либо из API коллекций

1 Ответ

3 голосов
/ 22 апреля 2019

«Рекурсивный конструктор» не приравнивается к вызову this(), а скорее к вызову new SingleLinkedListImpl().

Также this является головой, а не имеет заголовок.

Предполагая, что в вашем классе есть поля next и value, в псевдокоде:

  • , если массив пуст, выведите IllegalArgumentException
  • установить value на первый элемент массива
  • , если в массиве более 1 элемента, установить значение next в new SingleLinkedListImpl(<elements 1 to n>)

Чтобы назвать это:

SingleLinkedListImpl<Integer> head = new SingleLinkedListImpl<>(3, 1, 4, 1, 5); // for example
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...