Skip to content

线性表的定义与基本概念

核心思想

线性表的定义

线性表(Linear List)是具有相同数据类型的 n(n ≥ 0)个数据元素的有限序列,记为:

L = (a₁, a₂, ..., aᵢ, ..., aₙ)

其中:

  • n 为表长,n = 0 时称为空表
  • a₁ 是表头元素,aₙ 是表尾元素
  • aᵢ₋₁ 是 aᵢ 的直接前驱,aᵢ₊₁ 是 aᵢ 的直接后继

逻辑结构特点

线性表的逻辑结构是线性结构,即数据元素之间存在一对一的关系:

特点说明
有且仅有一个表头元素a₁ 没有前驱
有且仅有一个表尾元素aₙ 没有后继
其余元素有且仅有一个前驱和一个后继一对一的线性关系
元素类型相同每个元素占用相同大小的存储空间

存储结构分类

线性表的逻辑结构确定后,需要选择合适的存储结构(物理结构)来实现。408 考纲要求掌握两大类:

存储方式实现特点
顺序存储顺序表(数组)逻辑相邻 = 物理相邻,支持随机访问
链式存储单链表、双链表、循环链表、静态链表用指针表示逻辑关系,物理位置任意

顺序表 vs 链表

比较维度顺序表链表
存取方式随机访问 O(1)顺序访问 O(n)
插入/删除需要移动元素 O(n)修改指针 O(1)(已知位置时)
空间分配静态分配或动态扩容动态分配,按需申请
存储密度高(无额外指针开销)低(每个结点需要额外指针域)
适用场景表长可预估,频繁按位访问频繁插入/删除,表长变化大

408 选择题经典问法:"以下关于线性表的说法正确的是?"——注意区分逻辑结构(线性关系)和存储结构(顺序/链式),这是两个不同层面的概念。

线性表的基本操作

408 考纲要求的线性表基本操作:

操作说明
InitList(&L)初始化,构造空表
Length(L)求表长
LocateElem(L, e)按值查找
GetElem(L, i)按位查找
ListInsert(&L, i, e)在第 i 位插入元素 e
ListDelete(&L, i, &e)删除第 i 位元素
PrintList(L)输出所有元素
Empty(L)判空
DestroyList(&L)销毁表

注意& 表示引用传参(C++ 写法),含义是操作会修改线性表本身。408 真题的伪代码中经常出现这种写法。

考研高频考点

  • ⭐ 线性表的定义与逻辑结构特点(选择题)
  • ⭐ 顺序存储与链式存储的对比(选择题高频)
  • ⭐ 随机访问 vs 顺序访问的区别(概念辨析)
  • ⭐ 根据应用场景选择顺序表或链表(选择题/综合题)
  • 逻辑结构与存储结构的区分(易混淆考点)
  • 线性表基本操作的时间复杂度分析

易错:线性表是逻辑结构概念,不是存储结构。"顺序表"和"链表"才是存储结构。不能说"线性表是用数组实现的"——线性表既可以用顺序存储也可以用链式存储。

相关知识