我有一个使用“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)
.
我在我的主要方法中连续调用它两次,如下所示:
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”应该指向一个空值,对吧?但是,当第二次调用 printList(head) 时,它会神奇地打印列表中的所有元素!
这是 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;
}
}