Java 不了解Linkedlist节点指针如何指向其他节点?

Java 不了解Linkedlist节点指针如何指向其他节点?,java,linked-list,Java,Linked List,上面给出了listnode类的定义。如果我这样做 public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } 然后 这是否意味着节点2指向节点1,或者节点1现在有一个指向节点2的指针 如果我这样做了 ListNode3=新的ListNode(-7);然后 node2.next=node3 这是否意味着我们现在有一个节点1->节点2->节点3指向这个方向 ListNode node2 =

上面给出了listnode类的定义。如果我这样做

public class ListNode {
  int val;
  ListNode next;
  ListNode(int x) { val = x; }
}
然后

这是否意味着节点2指向节点1,或者节点1现在有一个指向节点2的指针

如果我这样做了
ListNode3=新的ListNode(-7);然后
node2.next=node3

这是否意味着我们现在有一个节点1->节点2->节点3指向这个方向

ListNode node2 = node1;
node1
node2
现在指向相同的
ListNode
对象

ListNode node1 = new ListNode(-1);
ListNode node2 = node1;
将打印
true
而不覆盖
equals()

当你这样做的时候

System.out.println(node1.equals(node2));
您正在将
node3
分配给
node2
next
类成员,并因此分配给
node1
的one
next

ListNode node3 = new ListNode(-7);
node2.next = node3;
在第一个例子中

ListNode node2 = node1;
node1
node2
现在指向相同的
ListNode
对象

ListNode node1 = new ListNode(-1);
ListNode node2 = node1;
将打印
true
而不覆盖
equals()

当你这样做的时候

System.out.println(node1.equals(node2));
您正在将
node3
分配给
node2
next
类成员,并因此分配给
node1
的one
next

ListNode node3 = new ListNode(-7);
node2.next = node3;

需要记住的一点是,当您编写
listnode1=newlistnode(-1)
然后
listnode2=node1
时,“node1”和“node2”都指向“newlistnode(-1)”对象。因此,如果更改“node1”或“node2”,它将更改指向其他对象的指针

现在,一旦你做到了

System.out.println(node1.next.equals(node2.next)); // true
System.out.println("node1: " + node1.next.val + " node2: " + node2.next.val); // node1: -7 node2: -7

您的
node2
仍然指向
新的ListNode(-1)
对象,因此您将得到-1->-7。对于指针,您需要记住的一点是,当您编写
listnode1=newlistnode(-1)
node2->ListNode(-1)
、和
node3->ListNode(-7)
,然后
listnode2=node1
时,同时使用“node1”和“node2”并指向“newlistnode”(-1)对象。因此,如果更改“node1”或“node2”,它将更改指向其他对象的指针

现在,一旦你做到了

System.out.println(node1.next.equals(node2.next)); // true
System.out.println("node1: " + node1.next.val + " node2: " + node2.next.val); // node1: -7 node2: -7
您的
node2
仍然指向
新的ListNode(-1)
对象,因此您将得到-1->-7。对于指针,您将有
node1->ListNode(-1)
node2->ListNode(-1)
,以及
node3->ListNode(-7)