LinkedList
1. LinkedList的数据结构是什么
双向链表: 每个节点上有两个指针(item/prve/next)
链表中的每一个元素称之为节点,节点在运行时动态生成
存储数据的数据域
存储下一个节点地址的指针域
2. LinkedList的存取原理
存:
尾部插入:
1. 创建一个新节点,前驱结点指向原尾结点,后继节点指向null
2. 更新新节点为尾结点(last)
3. 判断头结点是否为null?
把新节点作为头结点 : 把原尾结点的后继指节点执行新节点
指定位置插入:
1. 获取指定索引为的节点,并获取这个节点的前一个节点
2. 创建一个新的节点,前驱结点指向前一个节点,后继节点指向后一个节点
3. 把前一个节点的后继节点指向新节点,那个指定索引位的节点的前驱结点指向新节点
取:
取指定索引元素:
1. 根据索引判断从头部还是尾部来查找
2. 遍历查查找
3. LinkedList的删除原理
1. 获取指定要删除的节点,这个节点的前一个节点和后一个节点
2. 判断上一个节点是否null:
说明这个节点头结点,把下一个节点赋值为first节点 : 把上一个节点的后继节点指向下一个节点
删除当前节点的前驱结点
3. 判断下一个节点是否null:
说明这个节点尾结点,把上一个节点赋值为last节点 : 把下一个节点的前驱节点指向上一个节点
删除当前节点的后继结点
4. 删除当前节点(方便GC回收)