Я новичок в Java и пытаюсь реализовать связанный список (я знаю, что для этой цели существует класс списка, но выполнение его с нуля позволяет мне понять, как язык работает внутри)
В основном методе я объявляю 4 узла и инициализирую 3. Головной узел связанного списка имеет значение null. В первый раз, когда функция добавления вызывается с параметрами head и newNode, head имеет значение null, поэтому я инициализирую head и присваиваю ей значение newNode. В основном методе я ожидаю, что головной объект должен иметь новые значения, установленные из метода добавления. Но голова по-прежнему нулевая.
Я был бы признателен за понимание, почему это происходит.
Извините, если код не чистый, большое спасибо!
public class LinkedList
{
public void add(Node newNode, Node head)
{
if(head == null)
{
head = new Node();
head = newNode;
}
else
{
Node temp = new Node();
temp = head;
while(temp.next!=null)
{
temp = temp.next;
}
temp.next = newNode;
}
}
public void traverse(Node head)
{
Node temp = new Node();
temp = head;
System.out.println("Linked List:: ");
while(temp.next!=null);
{
System.out.println(" " + temp.data);
temp = temp.next;
}
}
public static void main(String args[])
{
Node head = null;
Node newNode = new Node(null, 5);
Node newNode2 = new Node(null, 15);
Node newNode3 = new Node(null,30);
LinkedList firstList = new LinkedList();
firstList.add(newNode,head);
// Part that I don't understand
// why is head still null here?
if(head==null)
{
System.out.println("true");
}
firstList.traverse(head);
firstList.add(newNode2,head);
firstList.traverse(head);
firstList.add(newNode3,head);
firstList.traverse(head);
}
}
public class Node
{
public Node next;
public int data;
public Node(Node next, int data)
{
this.next = next;
this.data = data;
}
public Node()
{
this.next = null;
this.data = 0;
}
}
head = new Node()в начале своего кода, вы изменяете локальную копию аргумента, но это не меняет его значения в вызывающем коде. - person assylias   schedule 31.08.2012