定义
线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列。
对于大部分线性表,数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。
循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。
线性表的基本组成部分(存储结构):顺序表和链表。
特征
- 集合中必存在唯一的一个“第一元素”。
- 集合中必存在唯一的一个 “最后元素” 。
- 除最后一个元素之外,均有唯一的后继(后件)。
- 除第一个元素之外,均有唯一的前驱(前件)。
存储结构
线性表主要由顺序表示或链式表示。在实际应用中,常以栈、队列、字符串等特殊形式使用。
顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或顺序映像(sequential mapping)。它以“物理位置相邻”来表示线性表中数据元素间的逻辑关系,可随机存取表中任一元素。
链式表示指的是用一组任意的存储单元存储线性表中的数据元素,称为线性表的链式存储结构。它的存储单元可以是连续的,也可以是不连续的。在表示数据元素之间的逻辑关系时,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置),这两部分信息组成数据元素的存储映像,称为结点(node)。它包括两个域:存储数据元素信息的域称为数据域;存储直接后继存储位置的域称为指针域。指针域中存储的信息称为指针或链。
常用运算
MakeEmpty(L)
这是一个将L变为空表的方法Length(L)
返回表L的长度,即表中元素个数Get(L,i)
这是一个函数,函数值为L中位置i处的元素(1≤i≤n)Prior(L,i)
取i的前驱元素Next(L,i)
取i的后继元素Locate(L,x)
这是一个函数,函数值为元素x在L中的位置Insert(L,i,x)
在表L的位置i处插入元素x,将原占据位置i的元素及后面的元素都向后推一个位置Delete(L,p)
从表L中删除位置p处的元素IsEmpty(L)
如果表L为空表(长度为0)则返回true,否则返回falseClear(L)
清除所有元素Init(L)
同第一个,初始化线性表为空Traverse(L)
遍历输出所有元素Find(L,x)
查找并返回元素Update(L,x)
修改元素Sort(L)
对所有元素重新按给定的条件排序strstr(string1,string2)
用于字符数组的求string1中出现string2的首地址