第二章 线性表

  大家好,我叫亓官劼(qí guān jié )


数据结构核心原理与算法应用

2.1 线性表的定义和基本操作

2.1.1 线性表的定义

线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列(有限、有序),其中n为表长,当n = 0 时,该线性表为空表。若用L来命名线性表,通常表示为L = (a1,a2,a3……an)

这里a1为该线性表中的第一个数据元素,又称为表头元素。an为最后一个数据元素,又称为表尾元素。除了第一个元素,每个元素都有唯一一个直接前驱;除了最后一个元素外,所有元素都有一个直接后继。

线性表有如下特点:

  • 线性表中元素个数有限
  • 线性表中元素具有逻辑上的顺序性,即有序。在序列中各元素有其先后次序。
  • 线性表中元素都是数据元素,每个元素都是单个元素。
  • 线性表中元素的数据类型都相同→每个元素占用的存储空间相同。
  • 线性表中的元素具有抽象性,仅讨论元素间的逻辑关系,而不考虑元素具体存储的内容。
  • 线性表是一种逻辑结构,表示元素间的一对一的关系,顺序表和链表是存储结构,是线性表的实现,两者属于不同层面的概念,不要混淆概念
  • 线性表的下表是从1开始的,而数组的下标的从0开始的,注意不要混淆。

2.1.2 线性表的基本操作

一个数据结构的基本操作是指其最核心、最基本的操作,其他较复杂的操作可以通过调用这些基本操作来实现。

线性表一般具有如下9个基本操作:

  1. InitList(&L):初始化表。构建一个空的线性表
  2. Length(L):求表长。返回线性表L的长度,即L中元素的个数。
  3. LocateElem(L,e):按值查找操作。在表L中查找具有给定关键字值的元素。
  4. GetElem(L,i):按位查找操作。获取表L中第i个位置的元素的值。
  5. ListInsert(&L,i,e):插入操作。在表L中的第i个位置插入指定元素e。
  6. ListDelect(&L,i,&e):删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。
  7. PrintList(L):输出操作。按前后顺序输出线性表L的所有元素值。
  8. Empty(L):判空操作。若L为空表,则返回true,否则返回false。
  9. DestroyList(&L):销毁操作。销毁线性表,并释放线性表L所占的内存空间。

这里仅为9中基本操作的定义,具体的实现会因存储方式的不同而不同,因此在下面我们在不同存储方式下,我们再来具体实现这些操作。


  大家好,我叫亓官劼(qí guān jié )

数据结构核心原理与算法应用