Java 不了解Linkedlist节点指针如何指向其他节点?
上面给出了listnode类的定义。如果我这样做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 =
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
的onenext
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
的onenext
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)