• 数据结构之链表


    链表概念:链表是一种在物理上非连续、非顺序的数据结构,由若干节点索组成。
    链表中数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列节点(链表中每一个元素称为节点)组成,节点可以在运行时动态生成。每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。双向链表会多一个指向上一个节点的指针域。

    链表分类:单向链表、双向链表、循环链表。

    单链表
    单链表的每一个节点包含两部分,一部分是存放数据的变量data,另一部分是指向下一节点的指针next

    双链表
    双链表的每一个节点除了拥有data和next指针,还拥有指向前置节点的prev指针。

    循环链表
    链表的尾节点指向头节点形成一个环,成为循环链表

    链表的存储原理:随机存储。
    链表的每一个节点分布在内存的不同位置,依靠next指针关联起来。这样可以灵活有效地利用零散的碎片空间。
    链表的第一个节点被称为头节点,没有任何节点的next指针指向它,或者说它的前置节点为空,头节点用来记录链表的基地址。有了它,我们可以遍历得到整条链表。
    链表的最后1个节点被称为尾节点,它指向的next为空。

    操作
    查找:慢,从头部开始遍历查找
    更新:慢,因为先要查找再插入
    插入:快
    删除:快

    时间复杂度
    查找节点:O(n)
    更新节点:O(1),不包含查询时间
    插入节点:O(1)
    删除节点:O(1)

    优点:插入、删除、更新效率高,省空间。
    缺点 :查询效率较低,不能随机访问。

    应用:链表的应用也非常广泛,比如树、图、Redis的列表、LRE算法实现、消息队列等

  • 相关阅读:
    SpringCloud微服务(十二)——Seata分布式事务
    AtomicReference实现单例模式
    数据库系统原理实验报告2 | 创建数据库和表
    认识Modbus通信协议(笔记)
    Spring源码分析refresh()第一篇
    java-net-php-python-63java长途汽车站售票系统计算机毕业设计程序
    基于SpringBoot+vue的文件管理系统
    RabbitMQ消息队列高级特性
    Linux选择题笔记
    Ajax与Axios的区别
  • 原文地址:https://blog.csdn.net/weixin_43526092/article/details/126789690