对以下代码感到困惑:
Node类:
class Node { int data; Node next; Node(int n) { data=n; next=null; } } LinkedList类:-
class LinkedList { Node head; void insertLinkedList(int n) { Node newNode=new Node(n); if(head==null) { head=newNode; } else { Node ptr=head; while(ptr.next!=null) { ptr=ptr.next; } ptr.next=newNode; } } 最初head为null。在insertLinkedList(1)函数调用中,情况是:-
newNode.data = 1 newNode.next = null
head.data = 1 head.next = null
在第二个函数调用之后insertLinkedList(2),预期情况是:-
newNode.data = 2 newNode.next = null
head.data = 2 head.next = null
但是的实际值head.next不为null。相反,它存储对第一个节点的引用。
入第二个节点后,head.next的期望值不为NULL。
Node ptr=head; 这里ptr用于引用头节点。所以在第一次插入后
while(ptr.next!=null) 为假,它不会进入循环。后循环
ptr.next=newNode; 被执行。并且它分配head的下一个值作为对新Node的引用。因此head.next不为null;如预期的那样。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。