线性表
1.什么是线性表
线性表是由n个数据元素组成的有限序列,这里需要说明以下几点:
-
数据元素的个数为n,也称表的长度,当n=0时称为空表;
-
如果一个线性表非空,即n>0,则可以简单的记作(a1,a2,a3…,an);
-
数据元素ai(1<=i<=n)表示了各个元素,在不同的场合,含义也不同
对于一个非空的线性表,其逻辑结构如下: -
有且仅有一个开始节点a1,没有直接前驱节点,有且只有一个一个直接后继结点a2
-
有且仅有一个终结节点an,没有直接后继节点,有且只有一个一个直接前驱结点an-1
-
其余的节点ai都有且仅有一个直接前驱节点ai-1和一个直接后继节点ai+1
-
对于同一个线性表,各个元素数据必须具有相同的数据类型,即同一线性表中各个数据元素具有相同的类型,每个数据元素的长度相同
2.线性表的基本运算
1)初始化
初始化表(InitList)即构造一个非空的线性表L;
2)计算表长
计算表长(ListLength)即计算线性表L中结点的个数
3)获取节点
获取节点(GetNode)即取出线性表L中第i个结点的数据,这里1<=i<=ListLength(L)
4)查找结点
查找结点(LocateNode)即在线性表L中查找值为x的结点,并返回该结点在线性表L中的位置。如果在线性表中没有找到值为x的结点,则返回一个错误标志。 这里需要注意的是,线性表中有可能含有多个与x值相同的结点,那么此时就返回第一次查找到的结点。
5)插入结点
插入结点(InsertList)即在线性表L的第i个位置插入一个新的结点,使得其后的结点编号依次加1。这时,插入一个新结点之后,线性表L的长度将变为n+1。
6)删除结点
删除结点(DeleteList)即删除线性表L中的第i个结点,使得其后的所有节点的编号依次减一,删除一个结点之后, 线性表L的长度将变为n-1。
在计算机中线性表可以采用两种方法来保存,一种是顺序存储结构,另一种是链式存储结构。顺序存储结构的线性表称为顺序表,而链式存储结构的线性表称为链表