public void DisplayList(List temp) {
List current= temp;
if (current==null) {
System.out.println("List is Empty");
}
while (current!=null) {
System.out.println(current);
current= current.getNode();
}
}
答案 0 :(得分:1)
在问题中给出的代码中,您当前的类型为List。列表为null和空是两个不同的东西。您当前的变量应该是Node类型(getNode()返回的类型),当您打印当前(假设它是一个节点)时,除非您已经覆盖了toString方法,它将为您提供一些随机值。所以也许做current.getValue()
通常单链表节点有两个重要的东西,nextNode和someValue。每个链表都存储头部或列表中的第一个节点。
这是我实现基本单链表的方式:
public class LinkedList
{
public class Node
{
Node nextNode;
String val;
public Node( Node nextNode, String val )
{
this.nextNode = nextNode;
this.val = val;
}
}
Node head = null;
public void add( String val )
{
Node current = head;
if ( current == null ) {
head = new Node( null, val );
}
else {
while ( current.nextNode != null ) {
current = current.nextNode;
}
// add new node end of list
current.nextNode = new Node( null, val );
}
}
public static void main( String[] args )
{
LinkedList list = new LinkedList();
list.add( "head" );
list.add( "second" );// adds after head
list.add( "third" );// adds after second
Node current = list.head;
// if node is not null print
while ( current != null ) {
System.out.println( current.val );
current = current.nextNode;
// if the end of the list is reached next node would be null
}
}
}
希望这有帮助
答案 1 :(得分:-2)
您的代码无效,因为getNode不是Java 7或8列表中的方法。
尝试使用内置于LinkedList中的listIterator方法。 listIterator方法返回一个ListIterator,然后您可以使用它来遍历列表。
您的方法应该采用LinkedList,如下所示:
if (current==null){
System.out.println("list does not exist");
}
while (current!=null){
ListIterator iterator = current.listIterator(0);
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
了解更多信息
https://docs.oracle.com/javase/7/docs/api/java/util/ListIterator.html https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html