public class LinkedList{
private class Node{
int value;
Node next;
}
private Node root;
public LinkedList(){
root = null;
}
public void insert(int value){
root = insert(root, root, value);
}
public Node insert(Node node, Node parent, int value){
if(root == null){
node = new Node();
node.value = value;
}else if(node == null){
node = new Node();
node.value = value;
parent.next = null;
}else{
node.next = insert(node.next, node, value);
}
return node;
}
public void printAll(){
printAll(root);
}
public void printAll(Node node){
Node traverse = node;
while(traverse != null){
System.out.println("This node's value is " + traverse.value);
traverse = traverse.next;
}
}
public static void main(String[] args){
LinkedList myList = new LinkedList();
myList.insert(5);
myList.insert(2);
myList.printAll();
}
}
Вот программа, объясняющая мои проблемы. У меня есть функция вставки, которая имеет как текущий узел, так и родительский узел в качестве параметров. Для первой вставки я вставляю 5 в список, корень в основном становится узлом с 5. Для второй вставки я вставляю 2 в список, но на этот раз он должен установить свой родительский узел рядом с нулем.Узел передан как родительский узел при рекурсивном вызове не обновляется
При печати после обеих вставок, он должен отображать
This node's value is 5
Но вместо этого, он по-прежнему показывает, что родителя рядом по-прежнему ссылаются на 2-ом узле.
This node's value is 5
This node's value is 2
Почему мой родитель.next = null не действует? Есть ли способ исправить это? У меня есть реализация, которая требует возможности изменить родителя.
Я вижу! Я изменяю родительский элемент в следующем рекурсивном вызове, но как только я закончил этот вызов, узел возвращается без изменений в корневой каталог – Lucky