Страницы

Поиск по вопросам

четверг, 9 апреля 2020 г.

Как рекурсивно создать двунаправленный список зная только количество элементов, Java

#java #рекурсия #структуры_данных #списки #связывание_данных

                    
Есть DDS DoubleNode, которая является двунаправленным списком:

public class DoubleNode {
public int value;
public DoubleNode prev;
public DoubleNode next;

public DoubleNode(int value, DoubleNode prev, DoubleNode next) {
    this.value = value;
    this.prev = prev;
    this.next = next;
}


а вот что я пытаюсь сделать, так это построить такую Node, зная только количество
элементов в ней (значения элементов выбираются случайно). При всем при этом построить
хочу рекурсивно, сваял вот такой метод:

    public static DoubleNode doubleNodeGenRec (int length) {
    return (length == 0) ? null : new DoubleNode((int)(Math.random()*10), null, doubleNodeGenRnd(--length));
}


как новому элементу передать ссылку на DoubleNode prev;?

выходит, что строится Node в одну сторону, т.к. в методе туда передается просто null,
и в результате выходит просто связанный список. чем заменить этот null?
    


Ответы

Ответ 1



public DoubleNode(int value) { this.value = value; } public static DoubleNode doubleNodeGen(int length) { return doubleNodeGenRec(length, null); } private static DoubleNode doubleNodeGenRec(int length, DoubleNode prev) { if (length == 0) { return null; } int value = (int) (Math.random() * 10); DoubleNode node = new DoubleNode(value); node.prev = prev; node.next = doubleNodeGenRec(length - 1, node); return node; }

Комментариев нет:

Отправить комментарий