Страницы

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

суббота, 22 июня 2019 г.

Как рекурсивно создать двунаправленный список зная только количество элементов, 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?


Ответ

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; }

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

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