• 大话数据结构 -03 链表



    一、线性表(List)

    0个或者多个数据元素的有限序列


    在一个较复杂的线性表中,一个数据元素可以由若干个数据项组成

     


    二、线性表抽象数据模型

      

    三、线性表的顺序存储结构

     

    使用一维数组实现顺序存储结构

      

    存取时间性能为O(1)

    四、顺序存储结构的插入与删除

    获取元素的操作

     

     

    注意:将指针S传给指针ElemType *e,指针S与e指向相同的地址,当函数结束后,指针e被释放(释放指的是,e不再指向之前的内存块(S指向的地方),因此跳出函数,S指针仍然能正常使用)

    插入操作

     

    删除操作

    复杂度:

    最好的情况,插入或删除最后一个元素,时间复杂度为O(1)

    最坏的情况,在第一个位置插入或删除元素,时间复杂度为O(n)
    平均移动次数与中间元素的移动次数相等,为(n-1)/2,因此平均时间复杂度还是O(n)


    五、链式存储结构

    1. 链表

    链表是一种动态数据结构,每个元素为一个「结点」,由数据域与指针域组成,每个结点中的指针域指向下一个结点。Head是“头指针”,表示链表的开始,用来指向第一个结点,而最后一个指针的指针域为NULL(空地址),表示链表的结束。

    单链表结构:

    1 struct Node {

    2 int Data;

    3 struct Node *next;

    4 };

     

    有时为了方便地对链表进行操作,会在单链表的第一个结点前附设一个结点,称为头结点。头结点的数据域可以不存储任何信息,也可以存储线性表的长度信息等。


    2. 头指针与头结点的区别

     

    3. 链式存储的代码

    若线性表为空表,则头结点的指针域为空。

     

    仅有头指针的单链表

     

    带有头结点的单链表

     

    4. 单链表的读取

  • 相关阅读:
    Java Native Method
    SQL语句优化
    Ibatis的环境搭建以及遇到的问题解决
    Java 构建器
    SpringMVC自定义视图 Excel视图和PDF视图
    java 枚举的常见使用方法
    mysql 根据某些字段之和排序
    MFC The Screen Flickers When The Image Zoomed
    How To Debug Qmake Pro File
    Gcc And MakeFile Level1
  • 原文地址:https://www.cnblogs.com/GuoXinxin/p/9969355.html
Copyright © 2020-2023  润新知