Java——链表
1. 出现的原因
当我们使用以数组为底层的数据存储的类型的时候,我们存储的东西越多,我们插入和删除里面的内容所花销的资源就越多,为了避免插入和删除的线性开销,我们要保证表可以不连续的存储,否则表的每个部分都可能要整体性的移动。
基于以上的考虑出现了链表
2. 链表
2.1 单向链表
链表由一系列的节点组成,这些节点可以不在连续的存储单元中,每个节点都有表元素(存的内容)和指向它的后续节点的链(link)
2.1.1 单向链表的增加
当我们向链表里面添加一个节点的时候,我们只需要将他的前面一个节点1的link指向要添加的元素Node4,然后将要Node4的link指向Node2即可
2.1.2 单向链表的删除
当我要从链表中删除一个节点时,我们只需要将要删除的节点Node2的前一个节点的link指向Node2的后一个节点就行了。
2.2 双向链表
双向链表和单向链表的唯一不同就是双向链表的每个节点多了一个指向前节点的链(link)
双向链表的增加和删除和单向链表差不多,不同就是
1.删除要将被删除节点的后一个节点的prev指向改为被删除节点的前一个节点
2.添加要将被添加节点的后一个节点的prev指向改为添加节点的,添加节点的prev要指向添加节点的前一个节点(😓😓)
2.3 循环链表
循环链表就是双向链表的头节点的prev指向它的尾节点,尾节点的next指向它的头节点,不多赘述