链表
-
概述:数组元素随机存储在内存中,通过指针维系数据之间“一对一”的逻辑关系,这样的存储结构就是链表。链表要求环环相扣,核心是一个节点只能有一个后继,但一个节点可以同时被多个节点指向(也就是一个节点可以有多个前驱)。
-
头节点:对于单链表来说,如果知道了第一个节点就可以通过遍历访问整个链表,所以也叫做头节点。
-
尾节点:尾节点的指针指向null。
所以只要找到头节点,就可以连续的访问整个链表,如下图:
- 遍历单链表:一定是从头开始访问,注意:不能忘记标记表头的指针。
- 链表的插入
- 表头插入:将创建的新节点指针指向原来的表头。
- 表中间插入:首先要遍历找到插入的位置,新节点的指针先指向插入位置后面的节点,然后插入前的的指针指向新节点。注意:插入完之后原来两个节点之间就断开了。
- 表尾插入:只需要原来最后一个结点的指针指向要插入的节点就可以。
链表的删除
- 表头删除:如图:
原来的节点到不了,会被JVM回收。 - 表尾删除:先遍历到前一个节点,使其指向null,这样最后一个节点到不了,也会被JVM回收。
- 表中间删除:先遍历到要删除的元素,使前一个元素的指针跳过删除的元素指向后面一个就可以了。
双向链表