我正在尝试打印链表中的所有元素。但是,我无法打印出完整的项目清单。
public void display()
{
int count =0;
if (head == null)
{
System.out.println("List is empty");
}
else {
ListNode temp = head;
while (temp.getNext() != null)
{
System.out.println(temp.getElement() +" ");
count ++;
temp = temp.getNext();
}
System.out.println("Total element: "+count);
}
}
//使用的方法
public ListNode getNext()
{
return this.next;
}
/*get the element of Listnode*/
public int getElement()
{
return this.element;
}
请告知哪部分是错误的。
答案 0 :(得分:5)
您省略了链表的最后一个元素(因为它没有下一个元素)。
while
条件应该是这样的:
while (temp != null)
答案 1 :(得分:1)
由于许多答案都正确地说你的while循环错过了最后一个条目,因为当 next 条目为null时它退出循环,因此不会在最后一个条目上调用.getElement()
列表。这一切都假设您的ListNode设置正确。
所有这些似乎都在复制迭代器的行为,考虑使用一个迭代器,一个示例如下;
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;
public class Arraylist{
public static void main(String[] args){
Collection<String> al=new ArrayList<String> ();
al.add("one");
al.add("two");
al.add("three");
Iterator<String> iterator=al.iterator();
while(iterator.hasNext()){
System.err.println(iterator.next());
}
}
}
答案 2 :(得分:1)
while (temp.getNext() != null)
{
System.out.println(temp.getElement() +" ");
count ++;
temp = temp.getNext();
}
在打印最后一项之前始终停止。您需要打印该项目,然后在next
为空时停止。
答案 3 :(得分:1)
将您的while循环条件更改为:
while (temp != null)
由于您检查了下一个节点的存在,而不是它不存在,因此将不会打印当前节点,这将使您打印除最后一个节点之外的所有元素