数据结构-线性表

来源:互联网 发布:智慧农业大数据平台 编辑:程序博客网 时间:2024/06/15 15:00

一、线性表的定义
线性表(List):零个或多个数据元素的有序组合。

  1. 线性表是一个序列。
  2. 线性表强调是有限的。
  3. 数据元素类型相同。

线性表的数学定义:若将线性表记为(a1,...,ai1,ai,ai+1,...,an),则表中ai1领先于aiai领先于ai+1

  1. 线性表元素的个数(n >= 0)定义为线性表的长度,当n = 0 时,称为空表。
  2. i为数据元素ai在线性表中的位序。
  3. 在复杂的线性表中,一个数据元素可以由若干个数据项组成。

线性表的抽象数据类型

  1. 创建和初始化线性表。
  2. 线性表重置为空表。
  3. 按位序得到数据元素。
  4. 查找某个元素是否存在。
  5. 获得数据表长度。
  6. 插入数据和移除数据。

线性表的抽象数据类型定义如下:

ADT 线性表(List)Data     线性表的数据对象集合为{a1, a2, ......, an},每个元素的类型均为DataType。其中,除第一个元素a外,每一个元素有且只有一个直接前驱元素,除了最后一个元素a外,每一个元素有且只有一个直接后继元素。操作元素之间的关系是一对一的关系。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。    ListInsert(*L, i, *e):删除线性表L中第i个位置元素,并用e返回其值。    ListLength(L):返回线性表L的元素个数。endADT

线性表的顺序存储结构

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

  1. 线性表的每个数据元素的类型都相同,可以使用C语言的一维数组来实现顺序存储结构,即把第一个数据元素存储到数组下标为0的位置中,接着把线性表相邻的元素存储在数组中相邻的位置。
  2. 线性表的顺序存储的结构代码。
#define MAXSIZE 20 /*存储空间初始分配量*/typedef int ElemType; /*ElemType类型根据实际情况而定,这里假设为int*/typedef struct{    ElemType data(MAXSIZE); /*数组存储数据元素,最大值为MAXSIZE*/    int length; /*线性表的当前长度*/}Splits;顺序结构需要三个属性:存储控件的起始位置:数组data,它的存储位置就是存储控件的存储位置。线性表的最大存储容量:数组长度MaxSize。线性表的当前长度:length
  1. 单独
0 0
原创粉丝点击