zoukankan      html  css  js  c++  java
  • 大话数据结构 -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. 单链表的读取

  • 相关阅读:
    mybatis 入门基础
    spring学习总结
    综合练习:词频统计
    组合数据类型综合练习
    Python基础综合练习
    熟悉常用的Linux操作
    1.大数据概述
    C程序语法(无左递归)
    文法规则
    实验一词法分析报告
  • 原文地址:https://www.cnblogs.com/GuoXinxin/p/9969355.html
Copyright © 2011-2022 走看看