线性表-广义表(7.24)


写在前面

这部分内容王道的课程没有介绍,先看了启航的,后对比看了新东方的,大同小异。

一、定义

一种非连续性的数据结构,是线性表的一种推广,通常记作 Ls=( a1,a2,…,ai,…,an)
一般来说,用大写字母表示广义表,用小写字母表示原子。通常用圆括号括起来,用逗号分隔其中的元素。

二、广义表长度

对广义表 Ls=( a1,a2,…,ai,…,an) 来说,n即为广义表的长度,我是去通过数逗号来看它的长度,也就是说:

例如,
A=(x,y,z)长度等于3(逗号数2+1)
B=(a,A)长度等于2(逗号数1+1)
C=(a,(A,B))长度仍等于2,因为(A,B)是一个广义表,是一个整体

下面再来看取表头和表尾两个操作

  • Head(Ls)= a 1 a_1 a1 (一个原子)
  • Tail(Ls)= ( a 2 , . . . , a n ) (a_2,...,a_n) (a2,...,an)(一个广义表)

其实表头就是把广义表最外面括号剥开,取第一个元素;表尾就是剥开后剔除第一个元素后,再加上括号

下面看个例子体会下
eg:
A=(a,b,(c,d),(e,(f,g))),则Head(Tail(Head(Tail(Tail(A)))))=?

解答:

  • Tail(A)=(b,(c,d),(e,(f,g)))
  • Tail(Tail(A))=((c,d),(e,(f,g)))
  • Head(Tail(Tail(A)))=(c,d) (注意这里)
  • Tail(Head(Tail(Tail(A))))=(d)
  • Head(Tail(Head(Tail(Tail(A)))))=d

三、深度

定义:广义表展开后的括号对的个数

这个还是比较简单的,看几个例子好了

A=(x,y,z)深度等于1
B=(a,A)深度等于2
C=(a,B,b)深度等于3(这里注意要将C展开=(a,(a,(x,y,z)),b)

四、存储结构

在这里插入图片描述
在这里插入图片描述

可能有时候会让你画出存储结构

写在最后

今天就完活啦,付出,就有收获!

Guess you like

Origin blog.csdn.net/liangsena/article/details/119065712