今天刷《剑指offer》中的链表操作的题目,在一处曾经经常出错的位置再一次犯了错误,该错误为在一个自定义的链表中,遍历链表节点的过程中,由于错误的判断语句导致的死循环。具体代码如下:
1 | /** |
其实如上代码中的遍历中,if (node.next != null)
不仅是多余的语句,而且也是错误的语句。因为在节点初始化的过程中,next
成员会被初始化为null
,故在while (node != null)
的循环判断中,可以直接判断当前节点是否为空。若遍历到链表中最后一个节点时,它的下一个节点为空节点,可以直接执行node = node.next
来将指针后移,在下一次while
判断后不进入循环即可正常运行。修改后的代码如下:
1 | public void iterateNode(Node node) { |