私はJavaが初めてで、Linkedリストを実装しようとしています(この目的のためにリストクラスが存在することは知っていますが、最初からそれを行うことで、言語が内部でどのように機能するかを理解できます)
メイン メソッドでは、4 つのノードを宣言し、3 つのノードを初期化します。リンク リストのヘッド ノードは null に設定されます。パラメータ head と newNode を指定して add 関数を初めて呼び出すと、head が null になるため、head を初期化し、newNode の値を割り当てます。main メソッドでは、head オブジェクトに add メソッドから新しい値が設定されることを期待しています。しかし、頭はまだヌルです。
なぜこれが起こっているのか理解していただければ幸いです。
コードがきれいでない場合はお詫び申し上げます。どうもありがとうございました。
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;
}
}