线性结构的特点是:在数据元素的非空有限集中1.存在唯一的一个被称做“第一个”的数据元素2.存在唯一的一个被称做“最后一个”的数据元素3.除第一个之外,集合中的每个数据元素均只有一个前驱4.除最后一个之外,集合中每个数据元素均只有一个后继。
一、线性表的定义
- 线性表: 是n≥0个数据元素a₁,a₂,…,an的有限序列,序列中除第一个和最后一个以外,每个元素有且仅有一个直接前驱和直接后继。
一个数据元素可以由若干个数据项组成。在这种情况下,常把数据元素称为记录,含有大量记录的线性表称为文件。 例如,学生为记录,姓名性别年龄班级学号为数据项。
线性表一般可以简称为“表”,可以形式化表示为:
A=(a₁,a₂,...,an), 空表:A=( ),或A=ø 以模型展开,抽象概念,根据具体的问题
数据元素a₍i₎的类型的形式化表示描述:datatype
二、线性表的特性:所有元素属于统一数据类型
- 数据元素有限序列:可数,有限
- 线性表的表长---元素个数,空表表长定义为0
- 数据元素线性关系:一个接着一个,顺序关系 (1≤i≤n)
- 线性表属于线性结构
三、线性表的常见运算
-
-
- 确定线性表长度
- 存取线性表的第i个数据元素,检验、改变某一个数据项的值
- 再第i -1个和第i个数据元素之间插入一个元素
- 删除第i个数据元素
- 将两个或两个以上的线性表合并
- 将一个线性表拆分成两个或两个以上的线性表
- 重新复制一个线性表
- 对线性表的数据元素根据规则进行重组
-
- 基本操作
- INITIATE(L) 初始化操作。设定一个空的线性表L
- LENGTH(L) 求长度函数。函数值为给定线性表L中数据元素的个数
- GET(L,i) 取元素函数。若1≤i≤LENGTH(L),则函数值为给定线性表L中第i个数据元素,否则为空元素NULL。称i为该数据元素在线性表中的次序。
- PRIOR(L,i) 求前驱函数。已知elm为给定线性表L中的一个数据元素,若它的次序大于1,则函数值为elm的前驱,否则为空元素。
- NEXT(L,elm) 求后继元素。已知elm为给定线性表L中的一个数据元素,若它的次序小于LENGTH(L),则函数值为elm的后继,否则为空元素。
- LOCATE(L,x) 定位函数。给定值x,,若线性表L中存在其值和x相等的数据元素,则函数值为该数据元素在线性表中的次序(或其存储位置),否则为零(NULL)。若线性表中值和x相同的数据元素不止一个,则函数值为这些元素在线性表L中的次序的最小值。
- INSERT(L,i,b) 前插操作。在给定线性表L中第i个数据元素之前插入一个新的数据元素b,使操作之前长度为n的线性表 (a₁,a₂,...,ai-1,ai,...,an) 变成长度为n+1的线性表(a'₁,a'₂,...,a'i-1,b,a'i+1,...,a'n) 其中b为操作之后的线性表L'中第i个数据元素,且当1≤j≤i-1时a'j=aj,当i+1≤j≤n+1时a'j=aj-1.可见,此操作仅在1≤i≤LENGTH(L)+1时可行。
- DELETE(L,i) 删除操作。若1≤i≤LENGTH(L),删除给定线性表L中第i个数据元素,使操作之前长度为n的线性表 (a₁,a₂,...,ai-1,ai,ai+1,...,an) 变成长度为n-1的线性表 (a'₁,a'₂,...,a'i-1,a'i,...,a'n-1) 其中,当1≤j≤i-1时a'j=aj,而当i≤j≤n-1时a'j=aj+1。若i<1或i>LENGTH(L),则此操作无意义。
- EMPTY(L) 判空表函数。若L为空表,则返回布尔值“true”,否则返回布尔值“false”。
- CLEAR(L) 表置空操作。已知线性表L或为空表或为非空表,操作结果将L置为空表。