クラス「ListNode」のオブジェクトを使用したリンクリストがあります
ListNode には、次の非静的メソッドがあります。
getValue()
setValue(Object obj)
getNext()
setNext(ListNode ln)
そのコンストラクターは、値と次のものを取ります。
ドライバー クラスのメイン メソッドで、リンク リストを作成します。
ListNode head = new ListNode("Overflow!", null);
head = new ListNode("Stack", head);
head = new ListNode("in", head);
head = new ListNode("is", head);
head = new ListNode("This", head);
というメソッドがありprintList(ListNode ln)
ます。
次のように、メイン メソッドで 2 回連続して呼び出します。
printList(head);
System.out.println();
printList(head);
私の方法は次のようになります。
public static void printList(ListNode head)
{
while(head != null)
{
System.out.print(head.getValue()+" ");
head = head.getNext();
}
}
私の方法では、参照は while ループで毎回異なるオブジェクトを指すように変更されます。メソッドを終了した後、参照 "head" は null を指しているはずですよね? しかし、printList(head) が 2 回目に呼び出されると、魔法のようにリスト内のすべての要素が出力されます。
jGrasp コンソールに表示される内容は次のとおりです。
----jGRASP exec: java StackOverflowQuestionExampleClass
This is in Stack Overflow!
This is in Stack Overflow!
----jGRASP: operation complete.
以下は、先生が使用するように私に言った listnode クラスです。
//Thomas Bettge, TJHSST, 10-20-2006
public class ListNode
{
private Object value;
private ListNode next;
public ListNode(Object v, ListNode n)
{
value=v;
next=n;
}
public Object getValue()
{
return value;
}
public ListNode getNext()
{
return next;
}
public void setValue(Object newv)
{
value=newv;
}
public void setNext(ListNode newn)
{
next=newn;
}
}