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

一、线性表的定义 

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

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

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

    原文作者:会飞的鱼_flyfish
    原文地址: https://www.jianshu.com/p/ac08fa0c9b73
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞