什么是线性表?
什么是线性表?
线性表是数据结构中最基本也是最常用的一种线性结构。让我们从线性结构的特点开始,逐步理解线性表的概念。
线性结构的特点
在线性结构中,数据元素的非空有限集具有以下特点:
- 存在唯一的一个被称作"第一个"的数据元素;
- 存在唯一的一个被称做"最后一个"的数据元素;
- 除第一个之外,集合中的每个数据元素均只有一个前驱;
- 除最后一个之外,集合中每个数据元素均只有一个后继。
线性结构的数据元素之间的关系如下图所示:
线性表、栈、队列、串和数组都属于线性结构,而线性表是最基本也是最常用的一种线性结构。
线性表的定义
线性表(List)是零个或多个数据元素的有限序列。序列中元素之间是有顺序的,就像上图中那样,八个小朋友都是按顺序排好的,第二个在第一个后面,第三个在第二个后面……
其次,线性表强调是有限的,即数据元素的个数是有限的。事实上,在计算机中处理的对象都是有限的,无限的数列,只存在于数学的概念中。
如果我们像高数那样定义线性表的概念,则:
若将线性表记为(a1, a2, ..., an),则表中:
- ai领先于ai+1
- ai+1领先于ai
- 称ai是ai+1的直接前驱元素
- 称ai+1是ai的直接后继元素
当i=1,2,...,n-1时,ai有且仅有一个直接后继;当i=2,3,...,n时,ai有且仅有一个直接前驱。
其对应关系如下图所示:
所以,将线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。
在非空表中的每个数据元素都有一个确定的位置,如a1是第一个数据元素,an是最后一个数据元素,ai是第i个数据元素,称i为数据元素ai在线性表中的位序。
生活中常见的线性表
我们生活中有很多东西都有线性表的身影,如一年中的星座列表:
班上同学的点名册,因为每个同学的信息是按顺序排的,因此虽然每个数据元素有很多数据项,但组合起来仍然是一个线性表:
还有我们天天都在用的手机通讯录,和点名册类似,同样是一种线性表:
还有一点要注意,如果我现在要将我的猫和张三家的狗也加入通讯录中,可行吗?答案是不可以,因为根据线性表的定义,必须是相同类型的数据才可以。猫和狗显然和人不是一种类型,想要记录的话,还是重新建立一个"宠物档案册"吧~
结语
当我们搞清楚什么是线性表后,在数据结构线性表篇我们还将一起学习线性表的抽象数据类型、线性表的顺序存储结构(顺序表的实现)、线性表的链式存储结构(链表的实现)等相关知识。希望这些内容能对大家有所帮助,一起学习,一起进步!