## 线性表的基础概念和基本操作
> 强调线性表是一种逻辑结构,不是存储结构
### 定义
线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列。一般表示:
L=(a1,a2,a3......an) 其中n可以理解为表长(线性表的长度),n=0时候,即表空
- `表头元素`:线性表中唯一的“第一个”数据元素,例如a1
- `表尾元素`:线性表中唯一的“最后一个”数据元素,例如an
重要逻辑特性:
- 除表头元素外,线性表中每个元素有且仅有一个`直接前驱`
- 除表尾元素外,线性表中每个元素有且仅有一个`直接后继`
基于此,这种**线性有序的逻辑结构**,使得线性表的特点如下:
- 元素的**个数有限**(强调有限序列)
- 元素在逻辑上具有**顺序性**,在序列中每个元素都是都有先后次序的
- 元素都数据元素,**每个元素都是单个元素**
- 元素的**数据类型都相同**(强调相同数据类型),每个数据元素占用相同大小的存储空间
- 元素具有**抽象性**,仅仅讨论元素之间的逻辑关系,不需要去考虑元素究竟表示的什么内容
> Tips: **线性表是一种逻辑结构**,表示元素之间一对一的相邻关系。**顺序表和链表则指的是存储结构**
### 基本操作
- `InitList(&L)`: **初始化表**。构造空的线性表
- `Length(L)`:**获取表的长度**。返回线性表L的长度,即表中的数据元素个数
- `LocateElem(L,e)`:**按值查找操作**。在表L中国查找具有给定关键字的元素
- `GetElem(L,i)`:**按位查找操作**。获取表中第i个位置的元素的值
- `ListInsert(&L,i,e)`:**插入操作**。在表的第i个位置上插入指定元素e
- `ListDelete(&L,i,&e)`:**删除操作**。删除表中第i个位置的元素,并用e返回删除元素的值
- `PrintList(L)`:**输出操作**。按照前后顺序(如:1、2....n)输出线性表的所有元素值
- `Empty(L)`:**判空操作**。当表L为空,则返回true,否则返回false
- `DestoryList(&L)`:**销毁操作**。将线性表销毁,释放线性表L所占用的内存空间(类似:释放内存)
线性表是具有相同的数据类型的有限个数据元素组成的,**数据元素是由数据项组成的**