美文网首页我的大学嵌入式 Linux C ARM C语言&嵌入式
混子数据结构学习之第二章线性表笔记上

混子数据结构学习之第二章线性表笔记上

作者: 那个混子 | 来源:发表于2021-11-15 07:31 被阅读0次

    "磨棱角,褪优越,沉下心"
    "不止于心动,更付诸于行动,执行力!“

    引言

    从这里开始,就真正进入数据结构核心内容的学习了,第二章主要是介绍了线性表以及他的顺序表示方法和链式表示方法,本章还是非常的重要,利用每天晚上零碎的时间,内容我大概学了一半多一点,现在对上周的内容进行一个总结,整理一下笔记。

    知识回顾

    线性表

    定义:

    线性表是具有相同特性的数据元素的一个有限序列,零个或者多个数据元素的有限序列。
    空表:没有数据元素的线性表。

    举例说明:

    1、英文26个字母属于线性表
    2、12星座是一个线性表
    3、公司的组织架构不属于线性表(一个领导可能管理多个下层)
    4、同学间的友谊不属于线性表(一个同学可能有多个朋友)

    线性表的逻辑特征
    • 在非空的线性表,有且仅有一个开始结点,它没有直接前驱,而仅有一个直接后继。
    • 有且仅有一个终端结点,它没有直接后继,只有一个直接前驱。
    • 除首尾结点外,中间的结点都有且仅有一个直接前驱和一个直接后继。

    线性表的类型定义、基本操作

    抽象数据类型表示

    ADT List{
        数据对象:D={ai|ai属于Elemset,(i=1,2,...,n,n>=0)}
        数据关系:R={<ai-1,ai>|ai-1,ai属于D,(i=2,3,...,n)}
        基本操作:
            InitList(&L);
            DestroyList(&L);
            ListInsert(&L,i,e);
            ListDelete(&L,i,&e);
            ……等等
    }ADT List
    

    基本操作

    不需要死记硬背,大概知道有这么一些操作即可!
    归纳基本操作就是:增、删、补、查···········

    • (1)InitList(&L)(Initialization List) //初始化
      操作结果:构造一个空的线性表L。
    • (2)DestroyList(&L)//销毁
      初始条件:线性表L已经存在。
      操作结果:销毁线性表L。
    • (3)ClearList(&L)//清除
      初始条件:线性表L已经存在。
      操作结果:将线性表L重置为空表。
    • (4)ListEmpty(L)//判断空表
      初始条件:线性表L已经存在。
      操作结果:若线性表L为空表,则返回TRUE;否则返回FALSE。
    • (5)ListLength(L)//求线性表的长度
      初始条件:线性表L已经存在。
      操作结果:返回线性表L中的数据元素个数。
    • (6)GetElem(L,i,&e)//获取线性表特定元素
      初始条件:线性表L已经存在,。
      操作结果:用e返回线性表L中第i个数据元素的值。
    • (7)LocateElem(L,e,compare())//查找线性表的元素(根据特殊条件)
      初始条件:线性表L已经存在,compare()是数据元素判定函数。
      操作结果:返回L中第1个与e满足compare()的数据元素的位序。若这样的数据元素不存在则返回值为0。
    • (8)PriorElem(L,cur_e,&pre_e)//求一个元素的前驱
      初始条件:线性表L已经存在。
      操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱;否则操作失败,pre_e无意义。
    • (9)NextElem(L,cur_e,&next_e)//求一个元素的后继
      初始条件:线性表L已经存在。
      操作结果:若cur_e是L的数据元素,且不是第最后个,则用next_e返回它的后继;否则操作失败,next_e无意义。
    • (10)ListInsert(&L,i,e)//插入线性表元素
      初始条件:线性表L已经存在,。
      操作结果:在L的第i个位置之前插入新的数据元素e,L的长度加一。
      插入元素e之前(长度为n):。
      插入元素e之后(长度为n+1):。
    • (11)ListDelete(&L,i,&e)//删除指定元素
      初始条件:线性表L已经存在,。
      操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减一。
      删除前(长度为n):。
      删除后(长度为n-1):。
    • (12)ListTraverse(&L,visited())//遍历所有元素
      初始条件:线性表L已经存在。
      操作结果:依次对线性表中每个元素调用visited()。

    小结

    这里暂时记录这些了,为了内容上的连贯性,这里相当于简单总结引出了线性表的概念和理解。上述所设计的定义、还有程序函数,都是伪代码,不必纠结程序语法问题,关键我认为要理解其中的思路逻辑,指导如何操作的。下面将分别用两篇来总结线性表的两种表示方法,即线性表的顺序表示和链式表示!

    参考资料:
    青岛大学.王卓.数据结构与算法
    《数据结构 C语言版》.严蔚敏
    《大话数据结构》.程杰

    欢迎关注本人微信公众号:那个混子
    记录自己学习的过程,分享乐趣、技术、想法、感悟、情感!
    单片机类嵌入式交流学习可加企鹅群:120653336

    相关文章

      网友评论

        本文标题:混子数据结构学习之第二章线性表笔记上

        本文链接:https://www.haomeiwen.com/subject/iufxtrtx.html