为什么我不能将ListNode设置为null,指向它,然后定义它?

时间:2016-06-29 02:37:56

标签: java linked-list

这只打印出“0”,我希望它打印出“01”

    ListNode fakehead = new ListNode(0);
    ListNode node = null;
    fakehead.next = node;
    node = new ListNode(1);

然而,这打印出“012”

    ListNode fakehead = new ListNode(0);
    ListNode node = new ListNode(1);
    fakehead.next = node;
    node.next = new ListNode(2);

为什么我不能设置node = null然后初始化它以打印出“01”?

执行此操作的正确约定/代码是什么? 我想在fakehead.next上创建新节点?

1 个答案:

答案 0 :(得分:1)

当你第一次将node设置为null并make fakehead.next = node时,fakehead.next指向null.since,当编译器执行此语句时,没有空间分配给节点" node = new ListNode(1 );"它为节点分配了一个新的内存。但是因为你在假设初始化之前你假装指向了假头,所以假定它只会指向null。这就是为什么你只能输出0。

而在第二种情况下,fakehead.next = node在节点初始化和分配后执行,因此在这种情况下它可以正常工作。