广义表

一、广义表的定义

广义表简称表,它是线性表的推广。一个广义表是n(n>=0)个元素的一个有限序列,当n=0时称为空表。在一个非空的广义表中,其元素可以是某一确定类型的对象,这种元素被称为单元素;也可以是由单元素构成的表,这种元素被称为子表或表元素。显然,广义表的定义是递归的,广义表是线性表的递归数据结构。

设ai为广义表的第i个元素,则广义表的一般表示与线性表相同

(a1,a2,a3,a4...an)

在广义表中,为了把单元素同表元素区分开来,一般用小写字幕来表示单元素,用大小字幕表示表。例如:

A=()

B=(e)

C=(a,(b,c,d))

D=(A,B,C)=((),(e),(a,(b,c,d)))

E=((a,(a,b),((a,b),c)))

        其中,A是一个空表,不含任何元素,其长度为0;B是一个只含有单元素e的表,其长度为1;C中有两个元素,第1个元素是单元素a,第2个元素是表元素(a,b,c),C的长度为2;D中有3个元素,其中每个元素又都是一个表,D的长度为3;E中只含有一个元素,该元素是一个表,该表中含3个元素,其中后两个元素又都是表。

        一个广义表的深度是指该表中括号嵌套的最大重数,在图像中则是值从树根节点到每个表元素结点所经过的结点个数的最大值。

二、广义表的存储结构

头尾链表存储表示

扩展性链表存储表示

广义表

广义表

广义表

广义表

参考:

https://blog.csdn.net/qq_27256783/article/details/78413866

https://blog.csdn.net/canyanruxue/article/details/78638018

https://blog.csdn.net/kongkongl/article/details/38737465

https://blog.csdn.net/qq78442761/article/details/54984776