1.Java如何构造链表
public class ListNode {
int val;
ListNode next;
ListNode() {}
ListNode(int val) { this.val = val; }
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}
2.插入结点
2.1首部插入
- 创建新结点new
- new.next = head
- 头指针head指向new
2.2中间插入
假设要插入到i个结点之前
- 遍历到第i-1个结点pre
- 生成新结点node,node.next指向第i个结点
- pre.next指向node
注意:不可颠倒顺序
2.3尾部插入
遍历到最后一个结点last后,将last.next指向newNode
3.删除结点
3.1首部删除
直接返回head.next
3.2中间删除
遍历到待删除结点的前驱结点pre
pre.next = pre.next.next
注意:添加条件判断,避免空指针异常
3.3尾部删除
遍历到尾结点的前驱结点pre
pre.next = null
JVM回收机制
若某个结点不可达(没有引用指向它),JVM会自动将这个结点回收。