请问报空指针异常的原因是?

来源:5-3 设立链表的虚拟头结点 Remove Linked List Elements

tataxqy

2019-05-09

反转链表这道题nextnode=nextnode.next;
这句话报空指针异常的原因是?

ListNode reverseList(ListNode head) {

    ListNode pre = null;
    ListNode cur = head;
    ListNode nextnode=cur.next;
    while(cur !=null){

        cur.next = pre;
        pre = cur;
        cur = nextnode;
        nextnode=nextnode.next;
    }

    return pre;
}


写回答

1回答

liuyubobobo

2019-05-10

你的cur保存的是当前节点。nextnode是cur之后的节点。但是,当cur指向链表最后一个节点的时候,nextnode为null,调用nextnode=nextnode.next抛空指针异常。


任意链表都会复现这个错误。创建一个含有两个元素的链表,跟踪一下你的程序,试试看?仔细观察一下程序运行过程中,各个变量是怎么变化的,最后nextnode为什么会为空?单步调试跟踪,是学习算法的重要方式哦。进步,就发生在这个过程中:)


加油!:)

0
1
tataxqy
谢谢bobo老师!!
2019-05-10
共1条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程