【问题标题】:Iteration in Linked List链表中的迭代
【发布时间】:2021-03-06 20:16:00
【问题描述】:

我们有一个有 5 个节点的链表

1 2 3 4 5

previous = pointing to 2
Head = pointing to 3

如果

prev.next=head.next;
head=head.next;

所以我的问题是 head 是否指向 3 并且只是通过执行 prev.next=head.next 删除了 3; 新的链表将是

1 2 4 5

现在我做 head=head.next; 那么当我已经删除了 head 指向的值为 3 的节点时,它将如何变为 4?

【问题讨论】:

  • 它被称为head 是有原因的。你不应该改变它的价值。使用不同的参考。称它为current 或其他有意义的东西。否则,你将如何找到列表的开头?

标签: java linked-list


【解决方案1】:

prev.next = head.next; 没有从内存中删除节点 3。

head 仍然指向 3,head.next 仍然指向 4。

所以写head = head.next 没问题,你只需改变head 指向的值。

【讨论】:

  • 那么它会在head指向下一个元素后留在内存中还是在它之后被删除??
  • 我相信在内存中没有更多指向该对象的指针之后 - Java 的垃圾收集器会将其从内存中删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 1970-01-01
  • 2016-01-09
  • 1970-01-01
  • 2016-03-02
相关资源
最近更新 更多