开发者社区> 问答> 正文

为什么在以下代码中head.next的值不为null?

对以下代码感到困惑:

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。相反,它存储对第一个节点的引用。

展开
收起
小六码奴 2019-10-14 18:44:25 9143 0
1 条回答
写回答
取消 提交回答
  • 入第二个节点后,head.next的期望值不为NULL。

    Node ptr=head; 这里ptr用于引用头节点。所以在第一次插入后

    while(ptr.next!=null) 为假,它不会进入循环。后循环

    ptr.next=newNode; 被执行。并且它分配head的下一个值作为对新Node的引用。因此head.next不为null;如预期的那样。

    2019-10-14 18:45:52
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
穆客带你快速定位 Node.js 内存泄露 立即下载
穆客带你快速定位Node.js内存泄露 立即下载
低代码开发师(初级)实战教程 立即下载