一、线性表的基本概念
1.线性表的定义:由零个或多个数据元素所组成的有限序列。
[注意]
- 线性表是一个序列,这就要求其中的元素必须是有顺序的,类似于低年级小学生排队放学一样。同时,除了第一个元素和最后一个元素以外,线性表中每一个元素前面和后面只能有一个元素与其对应。
- 线性表是有限的。
2.线性表的数学表达式
[注意]
- 线性表中元素的下标表示元素的序号,也即元素在表中的位置。
- 记
为线性表中其中一个数据元素,则我们将元素
称为元素
的直接前趋,元素
称为元素
的直接后继。
- 一般的,除了线性表中第一个和最后一个数据元素外,其余的数据元素只能有一个直接前趋和一个直接后继。
-
n=0时习惯将其称为空表。
3.线性表的例子
【例1】26个英文字母组成的英文表(A,B,C,D,...,Z),该表中所有的数据元素都是字母,元素关系之间都为线性。
【例2】学生基本情况表
学号 | 姓名 | 性别 | 出生年月 | 家庭地址 |
1 | 张三 | 男 | 2001.6 | 北大街18号 |
2 | 李四 | 女 | 2002.6 | 新城区甲楼大院 |
3 | 王五 | 男 | 2001.9 | 南大道789号 |
... | ... | ... | ... | ... |
【例3】某学生历次化学考试成绩:(98,99,92,96,95.......)
二、线性表的抽象数据类型
1.定义形式
ADT List{
数据对象: D={
|
属于ELEMSET,(i=1,2,...,n),n>=0}
数据关系: R={
|
,(i=2,3....n)
基本操作:
InitList(*L):初始化操作,建立一个空的线性表L。
ListEmpty(L):若线性表为空,返回TRUE,否则返回FALSE。
ClearList(*L):将线性表清空重置为空表。
GetElem(L,i,*e):将线性表中的第i个元素值返回给e。
LocateElem(L,e):将线性表L中查找与给定值相等的元素,如果查找成功,则返回相应元素值在表中的序号,否则返回0.
ListInsert(*L,i,e):在线性表L中的第i个位置插入新元素e。
ListDelete(*L,i,*e):删除线性表中第i个位置元素,并用e返回其值。
ListLength(L):返回线性表L的元素个数。
}
endADT
例 将所有的线性表Lb中存在但不在La中存在的数据元素插入到La中
void unionL(SqList *La,SqList Lb)
{
int La_len,Lb_len,i;