三个表的定义都来源于百度百科,通过这篇文章一次了解三个表以及它们的区别和联系
线性表
定义:一个线性表是n个具有相同特性的数据元素的有限序列,线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部)
特征:1.集合中必存在唯一的一个“第一元素”。
2.集合中必存在唯一的一个 “最后元素” 。
3.除最后一个元素之外,均有唯一的后继(后件)。
4.除第一个元素之外,均有唯一的前驱(前件)。
存储结构:线性表主要由顺序表示或链式表示。在实际应用中,常以栈、队列、字符串等特殊形式使用。
顺序表
定义:采用顺序存储结构(一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中)的线性表通常称为顺序表
举个例子:数组
广义表
定义:广义表是n(n≥0)个元素a1,a2,…,ai,…,an的有限序列。
其中:
①ai--或者是原子或者是一个广义表。
②广义表通常记作:
Ls=( a1,a2,…,ai,…,an)。
③Ls是广义表的名字,n为它的长度。
④若ai是广义表,则称它为Ls的子表。
注意:
①广义表通常用圆括号括起来,用逗号分隔其中的元素。
②为了区分原子和广义表,书写时用大写字母表示广义表,用小写字母表示原子。
③若广义表Ls非空(n≥1),则al是Ls的表头,其余元素组成的表(a2,a3,…,an)称为Ls的表尾。
④广义表是递归定义的 [1]
注意这里的广义表是一种非线性结构
广义表还有一个容易弄混的地方就是它的深度和长度,举个例子就很容易明白了
(a,(b,c),d)这个广义表的长度为3,深度为2
长度就是有几个元素,是在最外层表中用逗号隔开的
深度就是嵌套的字表最多的嵌套次数