这只打印出“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上创建新节点?
答案 0 :(得分:1)
当你第一次将node设置为null并make fakehead.next = node时,fakehead.next指向null.since,当编译器执行此语句时,没有空间分配给节点" node = new ListNode(1 );"它为节点分配了一个新的内存。但是因为你在假设初始化之前你假装指向了假头,所以假定它只会指向null。这就是为什么你只能输出0。
而在第二种情况下,fakehead.next = node在节点初始化和分配后执行,因此在这种情况下它可以正常工作。