广义表的概念及存储表示

广义表的概念及存储表示

文章目录

广义表的概念广义表的特性广义表的表头和表尾广义表的链接存储表示头尾表示法扩展线性链表表示法

广义表的概念

广义表的定义:广义表是

n

(

n

0

)

n\ (n≥0)

n (n≥0) 个表元素组成的有限序列。

广义表的表示:

L

=

{

e

1

,

e

2

,

.

.

.

,

e

n

}

L=\{e_1,\ e_2,...,\ e_n\}

L={e1​, e2​,..., en​},其中

L

L

L为表名

e

i

e_i

ei​是表元素

n

n

n是表长,

n

=

0

n=0

n=0是空表,

n

0

n≠0

n​=0是非空表“(” 和 ")"是表的分界符,不计入表的长度

广义表的表元素可以是不可再分的原子,还可以是广义表,称为广义表的子表。

广义表的特性

有次序:广义表的表元素的排列次序不能随意交换有层次:广义表的表元素可以是子表,子表还可以有子表有深度:最大嵌套层数即为广义表的深度,用括号重数来识别可共享:广义表的子表可为多个广义表的子表可递归:广义表的子表可以是自身

广义表的表头和表尾

广义表的表头:广义表的第一个表元素即为广义表的表头,它可以是原子,也可以是子表。广义表的表尾:除第一个元素外的其他元素组成的表为广义表的表尾,它一定是广义表。

广义表的链接存储表示

广义表的表元素都是原子时退化为线性表,它的连接存储表示为单链表。

一般情况下,广义表的链接存储表示是双链表。

头尾表示法

双链表有两种结点:

表结点:代表广义表或子表,它的

h

l

i

n

k

hlink

hlink指针指向表头,

t

l

i

n

k

tlink

tlink指向表尾,这是一种分支结点。原子结点:用于存储数据,指向它的指针是

h

l

i

n

k

hlink

hlink,它是链尾的表结点,省去了收尾指针。

特别的,空表没有结点,指向它的指针为NULL。

例如,对于广义表

L

=

(

c

,

(

d

,

e

,

f

)

,

(

)

)

L=(c,(d,e,f),())

L=(c,(d,e,f),()),它的头尾存储表示如下:

扩展线性链表表示法

这种表示法不分表头和表尾。

双链表有两种结点:

表结点:它的

h

l

i

n

k

hlink

hlink指针指向该表的第一个表元素结点,

t

l

i

n

k

tlink

tlink指针指向同一层下一个表元素结点。特别的,空表的

h

l

i

n

k

hlink

hlink和

t

l

i

n

k

tlink

tlink指针都为NULL。原子结点:用于存储数据,有

t

l

i

n

k

tlink

tlink指针,指向同一层下一个表元素结点。

例如,对于广义表

L

=

(

c

,

(

d

,

e

,

f

)

,

(

)

)

L=(c,(d,e,f),())

L=(c,(d,e,f),()),它的扩展线性链表存储表示如下:

相关推荐

【器材测评】六大重点升级价格不变: 英国Acoustic Energy AE100 MK2书架音箱
谁讲讲西安热力电玩怎么样?淘宝店铺西安热力电玩可靠吗?
二驴的怎么不直播了(二驴的为啥不直播了)
365是正规平台吗

二驴的怎么不直播了(二驴的为啥不直播了)

08-01 👁️ 9353