Есть 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;
}
Комментариев нет:
Отправить комментарий