LinkedList temp.next和temp?

时间:2011-12-09 06:39:55

标签: java linked-list

所以我正在练习一些链接列表问题,而且我一直在混淆说我们这样做 //这是一个只有头部的单链表

// what is the difference between 

ListNode temp = head;
while( temp != null ) {
    temp = temp.next ; 
} 

while( temp.next != null ) {
    temp = temp.next ; 
} 

这两者有什么区别?如果你能向我解释一下,我们将不胜感激。

4 个答案:

答案 0 :(得分:2)

第一个示例在temp == null时终止,这意味着temp在循环之后将具有null值并且对您没有多大用处,但是为了处理列表中的项目,这是完美的有效的方法。

第二个例子将在temp.next == null时停止,但是temp本身实际上有一个值,在这种情况下它将是对列表尾部的引用,如果你想要添加其他东西,它会更有用列表也是如此。

正如其他一些人指出的那样,如果temp为null,第二个将导致null解除引用异常,但如果temp在处理循环之前为null,那么这只会是一个问题,因此可以使用条件避免这种情况。

答案 1 :(得分:1)

第一个会比第二个链接晚一个链接,所以如果你想处理每个节点然后使用第一个。

答案 2 :(得分:0)

如果第一次检查while条件时temp本身为null,则第二个可能会获得NullPointerException。第一个是安全的。

第二个会在链表中的最后一个元素中结束,而第一个元素最终会以null结尾。

答案 3 :(得分:0)

第二个循环在执行条件时会生成nullPointerException,因此它不是一种有效的方法。

相关问题