一、链表

链表是一种数据结构,在内存中通过节点记录内存地址,相互链接形成一条链的存储方式,和数组一样是一种线性表,但相比数组而言,链表在内存中不需要连续的区域,只需要每个节点都能记录下下一个节点的内存地址,通过引用进行查找,

链表增删改操作消耗时间很小,查找遍历消耗时间很大。

二、分类

2.1 单链表

每个Node 只包含一个指针,即后继指针,尾结点的next指向空指针null;
图解链表数据结构和数组的优缺点

2.2 单向循环链表

尾结点next指向首节点地址

2.3 双向链表

每个节点都有两个地址的线性链表,两个地址分别指向前驱节点和后继节点,LinkList底层使用的双向链表

2.4 双向循环链表

首节点前驱结点指向尾结点,尾结点的后继指针指向首节点。

三、 总结

与数组相比链表数据结构的优缺点:
①跟数组相比,链表插入删除数据效率较高,时间复杂度为O(1)因为只需要改变指针的指向即可,但随机访问的效率低,因为每个节点地址都是不连续的,无规律的,

②和数组相比内存消耗空间更大,因为链表每个节点除了存储数据,还存储了两个或者一个指针.

相关文章: