链表

链表

链表

数组和链表的对比:image-20210820090218843

特点:

​ 真正的动态;头插方便

image-20210820151148173

在链表中插入元素:

顺序很重要

1
2
3
Node node = new Node(e)
node.next = prev.next;
prev.next = node;

在链表中删除某个节点:

1
2
3
4
5
Node node = new Node(e)
Node delNode = prev.next;
prev.next=delNode.next;
delNode.next = null;
size --;

链表的时间复杂度:

  1. 添加、删除操作
    • addLast(e) ——-O(n)
    • addFirst(e)——–O(1)
    • add(index,e)——-O(n/2)=O(n)
  2. 查找操作O(n)image-20210820103315983

链表的应用

  • 用链表实现栈
  • 用链表实现队列

删除元素递归的微观机制解读:

image-20210820143125372

image-20210820143157544

递归调用的代价:函数调用+系统栈空间

-------------本文结束感谢您的阅读-------------