一、线性结构
是n(n≥0)个数据元素(也称结点)的有穷序列。
线性结构的基本特征:
若至少含有一个结点,则除起始结点没有直接前趋外,其他结点有且仅有一个直接前趋;
除终端节点没有直接后继外,其他结点有且仅有一个直接后继。
二、线性表的定义
线性表是由同一类型的数据元素构成的线性结构。是n(n≥0)个结点的有穷序列。
结点个数n称为表长。
n=0时,称为空表,记为()或 φ。
n>0时,表示成:(a1,a2,…an)。
其中:a1称为起始结点;an称为终端结点;对任意一对相邻结点ai和ai+1,将 ai 称为 ai+1 的直接前趋,ai+1 称为 ai 的直接后继。
对于ai,当 i=2,...,n 时,有且仅有一个直接前趋ai-1,当i=1,2,...,n-1 时,有且仅有一个直接后继ai+1,而 a1是表中第一个元素,它没有前趋,an是最后一个元素无后继。
需要说明的是:ai为序号为i的数据元素(i=1,2,…,n),通常我们将它的数据类型抽象为datatype,datatype根据具体问题而定。
如在学生情况信息表中,它是用户自定义的学生类型; 在字符串中,它是字符型;等等。
三、线性表的基本运算
初始化Initiate(L):建立一个空表L=(),L不含数据元素。
求表长Length(L):返回线性表L的长度。
读表元素Get(L,i):返回线性表L的第i个数据元素,当i不满足1≤i≤Length(L)时,返回一特殊值。
定位(按值查找)Locate(L,x):查找线性表中数据元素等于x的结点序号,返回找到的结点集合中序号的最小值,否则返回值为0(说明没有找到)。
插入Insert(L,x,i):在线性表L的第i个位置上增加一个值为x的新结点(整个表长+1),参数i的合法取值范围是1≤i≤n+1。
删除Delete(L,i):删除线性表L的第i个位置结点(整个表长-1),参数i的合法取值范围是1≤i≤n。
注意:不同的存储结构基本运算的实现细节是不同的。