LV03-02-数据结构-线性表-基础知识

本文主要是数据结构——线性表基础知识相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
Windows windows11
Ubuntu Ubuntu16.04的64位版本
VMware® Workstation 16 Pro 16.2.3 build-19376536
SecureCRT Version 8.7.2 (x64 build 2214) - 正式版-2020年5月14日
开发板 正点原子 i.MX6ULL Linux阿尔法开发板
uboot NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03)
linux内核 linux-4.15(NXP官方提供)
STM32开发板 正点原子战舰V3(STM32F103ZET6)
点击查看本文参考资料
参考方向 参考原文
------
点击查看相关文件下载
--- ---

一、线性表的概念

线性表,全称其实是线性存储结构。它是一种一对一的逻辑关系,它是包含若干数据元素的一个线性序列。记为:
$$
L = (a_0, a_1, …, a_{i-1},a_i,a_{i+1}, …,a_{n-1})
$$
其中 L 称为表名,$a_i( 0 \le i \le n-1)$; n 为表长,当 n > 0 时,线性表 L 为非空表,否则为空表。

线性表还可以用二元组的形式表示:
$$
L = (D,R)
$$
其中:

  • D 为数据元素集合

$$
D={a_i | a_i \in datatype ,i=0,1,2, ……, n-1 ,n\ge 0}
$$

  • R 为关系集合

$$
R={<a_i , a_{i+1}> | a_i , a_{i+1} \in D, 0 \le i \le n-2}
$$

  • 关系符$<a_i, a_{i+1}>$在这里称为有序对,表示任意相邻的两个元素之间的一种先后次序关系。
点击查看实例

设有一个线性表 L = {1, 2, 3, 4, 5} ,它们的关系如下图:

image-20220425215837663

使用二元组 L = (D, R) 描述该线性表,则有:

1
2
D={1 , 2 , 3 , 4 , 5} (n = 5)
R={<1,2> , <2,3> , <3,4> , <4,5> , <5,6>}

【注意】使用线性表存储的数据,如同向数组中存储数据那样,要求数据类型必须一致,一半是整形,另一半是字符串的一组数据无法使用线性表存储。

二、线性表存储结构

线性表可以理解为用一根线把数据按照顺序起来,然后把这一串数据放置到物理空间,我们可以选择以下两种:

image-20220929122020819

图中的(1),将数据依次存储在连续的整块物理空间中,这种存储结构称为顺序存储结构(简称顺序表);图中的(2),将数据分散的存储在物理空间中,通过一根线保存着它们之间的逻辑关系,这种存储结构称为链式存储结构(简称链表)。所以说线性表可以分为顺序表和链表两种,后续会进行详细的学习。

三、前驱与后继

某一元素的左侧相邻元素称为直接前驱,位于此元素左侧的所有元素都统称为前驱元素;某一元素的右侧相邻元素称为直接后继,位于此元素右侧的所有元素都统称为后继元素。例如

image-20220929122250507
  • 线性表的前驱和后继特征

对非空线性表 L 来说:

(1)$a_0$是表头,无前驱

(2) $a_{n-1}$是表尾,无后继

(3)其它的每个元素 $a_i$ 有且仅有一个直接前驱 $a_{ i -1}$ 和一个直接后继 $a_{i+1}$ 。