和ArrayList比较
1.优点
- 在给定下标进行查找,时间复杂度O(1)
2.缺点
- 插入数据、删除数据,最坏情况下,时间复杂度O(N)
- 扩容之后可能浪费空间
1 概念
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的;
ppps.1.现实中的结点都是从堆上申请出来的,两次申请空间可能连续也可能不连续!
2 结构
2.1 单双向
2.2 带头 不带头
2.3 循环 非循环
2.4 重点
2.4.1无头单向非循环链表:
结构简单,一般不会单独用来存储数据,更多是作为其他数据结构子结构,如哈希桶、图的邻接等
2.4.2 无头双向链表
在java集合框架中LinkedList底层是无头双向循环链表
3 链表的实现
// 1、无头单向非循环链表实现
public class SingleLinkedList {
//头插法
public void addFirst(int data){
}
//尾插法
public void addLast(int data){
}
//任意位置插入,第一个数据节点为0号下标
public void addIndex(int index,int data){
}
//查找是否包含关键字key是否在单链表当中
public boolean contains(int key){
return false;
}
//删除第一次出现关键字为key的节点
public void remove(int key){
}
//删除所有值为key的节点
public void removeAllKey(int key){
}
//得到单链表的长度
public int size(){
return -1;
}
public void clear() {
}
public void display() {}
}