• 初初见你,编程海洋里你独自美丽(叁)


    线性表:零个或多个数据元素的有限序列。

    举个例子:小学生排队,有一个打头,一个收尾。当中的每一个知道他前面一个是谁,后面一个是谁。
    关于线性表,这里强调几个地方,帮助大家理解线性表。

    第一,他是一个序列,也就是说,元素之间是有顺序的。若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。

    如果排队的小朋友前面有两个小朋友,那就不可以排成一队了。同样,如果一个小朋友后面有两个小朋友,也是不合理的。

    第二,线性表强调是有限的。

    就像小朋友班级人数是有限的。实际上在计算机中处理的对象都是有限的,哪种无限的序列,一般只存在于数学概念中。

    如果用数学语言来进行定义:

    若将线性表记为(a1,...,ai-1,ai,ai+1,...,an ),则其中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接后继元素。当i=1,2,...,n-1时,ai有且仅有一个直接后继。当i=2,3,...,n时,ai有且仅有一个直接前驱。所以线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。非空表的第i个元素为ai,i称为数据元素ai在线性表中的位序。

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

    线性表的抽象模型

    ADT 线性表(List)
    Data

    线性表的数据对象集合为{a1,a2,... ...,an},每个元素的类型均为DataType。其中,除了第一个元素a1外,每个元素有且只有一个直接前驱元素。除了最后一个元素an外,每个元素有且只有一个直接后继元素。数据元素之间的关系是一对一的关系。

    Operation

    InitList(*L) :     初始化操作,建立一个空的线性表L。
    ListEmpty(L):    若线性表为空,返回true,否则,返回false。
    ClearList(*L):      将线性表清空
    GetElem(L,i,*e):      将线性表L中的第i个位置的元素值返回给e
    LocateElem(L,e):     在线性表L中与给定值e相等的元素,如果查找成功,返回该元素在表中的序列号。如果失败,返回0.
    ListInsert(L,i,e) :     在线性表L中的第i个位置插入新元素e。
    ListDelete(
    L,i,*e):     删除线性表L中的第i个位置的元素,并用e返回其值。
    ListLength(L):      返回线性表L的元素个数。

    对于不同应用,线性表的基本操作时不同的,上述操作是最基本的。对于实际问题中涉及的更复杂的操作,完全可以用这些基本操作的组合来实现。在实际编程中,还应该熟悉编程语言关于线性表的常用API,以简化编程,使得编写的程序更易于理解。
    对于java程序员来说,线性表是十分重要的,对应该语言的集合部分。弄懂了线性表相关知识,对于java的集合的理解有着不小的帮助。同样的,如果本身比较熟悉,能深入理解集合底层部分知识,学习这部分也是事半功倍的。加油!

    当前只是介绍了线性表的一些基本概念与术语。后面几篇,我会分别介绍一下线性表的顺序存储结构与链式存储结构,以及单链表,静态链表等知识。大家可以关注我的微信公众号,方便利用零碎时间互相交流。共勉!

    更有早行人

    路漫漫其修远兮,吾将上下而求索。。。

  • 相关阅读:
    rt_thread studio结合cubmx进行stm32驱动开发学习
    rt_thread之时钟管理
    rt_thread线程间通讯
    使用jQuery开发iOS风格的页面导航菜单
    使用jQuery开发一个带有密码强度检验的超酷注册页面
    使用Javascript来创建一个响应式的超酷360度全景图片查看幻灯效果
    [英] 推荐 15 个 jQuery 选择框插件
    JavaScript封装Ajax(类JQuery中$.ajax()方法)
    阿里前端电话面试
    基于HTML5的Web跨设备超声波通信方案
  • 原文地址:https://www.cnblogs.com/caozz/p/linear.html
Copyright © 2020-2023  润新知