zoukankan      html  css  js  c++  java
  • 数据结构之链表

    链表(linkedlist)

    • 定义

        链表是一系列的存储数据元素的单元通过指针串接起来形成的,因此,链表中的每个单元至少有两个域:数据域指针域。根据指针的指向,链表能形成不同的结构:单向链表,双向链表,循环链表

     

    • 单向链表

        单向链表拥有一个数据域一个指针域;数据域用于存储数据元素,且都是通过一个 Object 类的对象引用来指向数据元素的;而指针域用于指向下一个具有相同结构的节点。

                        

     

     

          如图,链表的第一个节点和最后一个节点,分别称为链表的头节点尾节点。尾节点的特征是其 next 引用为空(null);如果节点 a1 的 next 引用指向节点 a2,则 a1 就是 a2 的直接前驱,a2 是 a1 的直接后续只能通过前驱节点找到后续节点而无法从后续节点找到前驱节点

     

                  

    • 双向链表

        相对于单向链表,双向链表新增加一个域,该域用于指向节点的直接前驱节点,使得通过一个节点的引用,不但能够访问其后续节点,也可以方便的访问其前驱节点;单向链表只能从一个方向遍历,双向链表可以从两个方向遍历。

                                   

                                

          在使用双向链表实现链接表时,为使编程更加简洁,我们使用带两个哑元节点的双向链表来实现链接表。其中一个是头节点,另一个是尾节点,它们都不存放数据元素,头节点的pre 为空,而尾节点的 Next 为空。

                    

     

    • 循环链表

        头节点和尾节点被连接在一起的链表称为循环链表,这种方式在单向和双向链表中皆可实现。循环链表中第一个节点之前就是最后一个节点,反之亦然。

                                 

                    

    • 链表的优缺点

        优点:链表是很常用的一种数据结构,不需要初始化容量,可以任意加减元素; 添加或者删除元素时只需要改变前后两个元素结点的指针域指向地址即可,所以添加,删除很快; 

         缺点:因为含有大量的指针域,占用空间较大; 查找元素需要遍历链表来查找,非常耗时。

         适用场景:数据量较小,需要频繁增加,删除操作的场景

           

         

     

  • 相关阅读:
    [nRF51822] 1、一个简单的nRF51822驱动的天马4线SPI-1.77寸LCD彩屏DEMO
    [安卓] 18、一个简单的例子做自定义动画按钮和自定义Actionbar
    [自己动手玩黑科技] 1、小黑科技——如何将普通的家电改造成可以与手机App联动的“智能硬件”
    [安卓] 17、一个简单的例子学安卓侧滑设计——用开源slidingmenu
    [安卓] 16、ListView和GridView结合显示单元实现自定义列表显示效果
    mysql常用处理时间的相关函数
    Mysql中HAVING的相关使用方法
    mysql中常见正则表达式的应用
    Linux系统模拟发送HTTP的get和post请求
    mysql删除字符串的前后的空格
  • 原文地址:https://www.cnblogs.com/javaisbest/p/12920405.html
Copyright © 2011-2022 走看看