数据结构系列篇章
一、基本数据结构之数组
二、基本数据结构之链表
三、基本数据结构之队列
四、基本数据结构之栈
五、基本数据结构之哈希表
六、基本数据结构之集合
七、基本数据结构之树
八、基本数据结构之堆
九、基本数据结构之图
前言
链表是存储数据的一种方式,它摆脱了连续空间存储的束缚,链表中的每个元素都由val和next两个部分组成(此时链表特指单端链表,双端链表先不谈),val表示存储的数据,next表示链表中下一个元素的位置。
public class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val;
}
ListNode(int val, ListNode next) {
this.val = val; this.next = next;
}
}
一、链表的基础概念
1.链表的时间复杂度
- 访问:O(N)
- 搜索:O(N)
- 插入:O(1)
- 删除:O(1)
2.链表的特点
适合写而不适合读
二、链表的操作
1.创建链表
LinkedList<> list = new LinkedList<>();
2.添加元素
list.add(元素);//时间复杂度为O(1)
list.add(索引,元素);时间复杂度为O(N)
3.查找元素
list.indexof(元素);//时间复杂度为O(N)
4.更新元素
list.set(索引,元素);
5.删除元素
list.remove(索引);//时间复杂度为O(N)
6.链表长度
list.size();//时间复杂度为O(1)