美文网首页
《大话数据结构》 第三章-线性表

《大话数据结构》 第三章-线性表

作者: 会飞的鱼_flyfish | 来源:发表于2018-05-21 19:17 被阅读14次

    一、线性表的定义 

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

    这个定义主要涉及到两点: 

    1、线性表是一个序列,元素之间是有顺序的。 

    2、线性表的元素是有限的。

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

    线性表中的数据元素必须是相同类型的。 

    二、线性表的抽象数据类型

    ADT 线性表(List)Data    线性表的数据对象集合为{a1,a2,......,an},每一个元素的类型为DataType。其中,除第一个元素a1外,每一个元素都只有一个前驱元素,除了最后一个元素an外,每一个元素都只有一个后继元素。数据元素之间的关系是一对一的关系.    OperationInitList(*L);      初始化操作,建立一个空的线性表L。ListEmpty(L);  若线性表为空,返回ture,否则返回flase 。CLearList(*L);  清空线性表GetElam(L,i,*e);  将线性表的第i个元素值返回给e。LocateElam(L,e); 在线性表中查找与e相等的元素。ListInsert(*L,i,e); 在线性表第i个位置插入新元素e。ListDelete(*L,i,  *e);删除线性表中第i个元素的值,并用e返回该值。ListLength(L); 返回线性表L的元素个数。

    ADT 线性表(List)

    Data

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

        Operation

            InitList(*L);      初始化操作,建立一个空的线性表L。

            ListEmpty(L);  若线性表为空,返回ture,否则返回flase 。

            CLearList(*L);  清空线性表

            GetElam(L,i,*e);  将线性表的第i个元素值返回给e。

            LocateElam(L,e); 在线性表中查找与e相等的元素。

            ListInsert(*L,i,e); 在线性表第i个位置插入新元素e。

            ListDelete(*L,i,  *e);删除线性表中第i个元素的值,并用e返回该值。

            ListLength(L); 返回线性表L的元素个数。

    endADT

    上述线性表的抽线数据结构所提及的操作是最基本的。对于更复杂的操作,可以用这些基本操作的组合来实现。 

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

    线性表的顺序存储结构,指的是一段地址连续的存储单元依次存储线性表的数据元素。 

    1、顺序存储方式 

    在C语言中,是用线性表的一维数组来实现顺序存储结构的。 

    2、数据长度与线性表的长度的区别 

    数组的长度是存放线性表的存储空间的长度。 

    线性表的长度是线性表中数据元素的个数,随着插入和删除操作的进行,这个量是变化的。 

    在任意时刻,线性表的长度应该小于等于数组的长度。 

    3、地址计算方法 

    线性表是从1开始数的,数组却是从0开始第一个下标的。

    存储器中每一个数据单元都有自己的编号,这个编号称为地址。 

    如何计算数组中元素的地址。 

    假设该数组中的元素占用的存储单元为c个,那么线性表中第i+1个数据元素的存储位置和第i个元素的存储位置满足以下的关系: 

    LOC(a i+1)=LOC(a i)+c。 

    第i个元素的地址可以由a1推算出。 

    LOC(a i)=LOC(a 1)+(i-1)*c

    相关文章

      网友评论

          本文标题:《大话数据结构》 第三章-线性表

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