一、链表
链表是一种数据结构,在内存中通过节点记录内存地址,相互链接形成一条链的存储方式,和数组一样是一种线性表,但相比数组而言,链表在内存中不需要连续的区域,只需要每个节点都能记录下下一个节点的内存地址,通过引用进行查找,
链表增删改操作消耗时间很小,查找遍历消耗时间很大。
二、分类
2.1 单链表
每个Node 只包含一个指针,即后继指针,尾结点的next指向空指针null;
2.2 单向循环链表
尾结点next指向首节点地址
2.3 双向链表
每个节点都有两个地址的线性链表,两个地址分别指向前驱节点和后继节点,LinkList底层使用的双向链表
2.4 双向循环链表
首节点前驱结点指向尾结点,尾结点的后继指针指向首节点。
三、 总结
与数组相比链表数据结构的优缺点:
①跟数组相比,链表插入删除数据效率较高,时间复杂度为O(1)因为只需要改变指针的指向即可,但随机访问的效率低,因为每个节点地址都是不连续的,无规律的,
②和数组相比内存消耗空间更大,因为链表每个节点除了存储数据,还存储了两个或者一个指针.