链表

链表的原理

在这里插入图片描述
元素(element): 真实存于线性表中的内容,是我们关心的核心内容。
结点(node): 为了组织链表而引入的一个结构,除了保存我们的元素之外,还会保存指向下一个结点的引用。

  • 创建结点
class Node
  {
  int val; // 保存我们的元素
  Node next; // 保存指向下一个结点的引用;其中尾节点的 next == null
}
// head 是一条链表的头结点;通过 head 我们可以找到所有的结点;所以用头节点完全代表链表
Node head = ...;
// 某条链表的头结点是 null,表示头结点不存在。进一步可以表示是一条没有头结点的链
//表,也就是一条空链表
Node head = null;
  • 当前结点(current / cur): 表示链表中某个结点。
    前驱结点(previous / prev): 表示链表中某个结点的前一个结点;头结点没有前驱结点。
    后继结点(next): 表示链表中某个结点的后一个结点;尾结点没有后继结点。

List item

链表的遍历

Node cur = head;
while (cur != null) {
  cur = cur.next;
}

链表的插入与删除

  • 给定前驱结点后的插入
Node prev = ...;
Node node = new Node(v);
node.next = prev.next;
prev.next = node;
  • 给定前驱结点后的删除
Node prev = ...; // 待删除元素的前驱结点
prev.next = prev.next.next;
  • 头插
public static void main(String args) {
  Node head = build();
  head = pushFront(head, 0);
  // 通过遍历打印,验证头插是否正确
}
private static Node pushFront(Node head, int v) {
  Node node = new Node(v);
  node.next = head;
  head = node;
  return head;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值