链表-链表介绍
链表(Linked List) 由一系列节点组成,每个节点包含两部分,数据和指针。链表的节点是通过指针连接在一起,形成一个链式结构。
链表的类型
- 单链表:每个节点包含数据和指向下一个节点的引用。链表的头节点是链表的入口,尾节点的下一个指针为空(null)。访问链表中的元素需要从头节点开始沿着指针依次遍历。
- 双链表:每个节点包含数据、指向前一个节点的引用和指向下一个节点的引用。相比于单向链表,双向链表可以双向遍历,从头到尾或从尾到头都可以。
- 循环链表:尾节点的引用指向链表的头节点,形成一个循环。循环链表可以是单向的或双向的。
链表的存储方式
链表的存储方式是通过节点之间的引用来建立连接,而不像数组一样将元素按顺序存储在连续的内存位置上。
链表的定义
一个节点包含数据和指针。
// 单链表节点定义
class LinkNode {
constructor(val, next) {
this.val = val;
this.next = next;
}
}
链表的操作
- 插入:在链表中插入一个新节点。
- 在链表的开头插入节点。
- 在链表的末尾插入节点。
- 在链表的指定位置插入节点。
- 删除:从链表中删除指定节点。
- 删除链表的第一个节点。
- 删除链表的最后一个节点。
- 删除链表的指定位置的节点。
-
搜索:在链表中查找指定值的节点。 从链表的头节点开始遍历链表,逐个比较节点的值,直到找到匹配的节点或到达链表末尾。
-
遍历:按顺序访问链表中的每个节点。 从链表的头节点开始遍历,依次访问每个节点的数据。
-
获取链表长度。
-
反转链表:将链表中节点的顺序颠倒过来。 修改节点之间的指针引用,使链表从原来的末尾变为新的头部。