写在前面
这部分内容王道的课程没有介绍,先看了启航的,后对比看了新东方的,大同小异。
一、定义
一种非连续性的数据结构,是线性表的一种推广,通常记作 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)
四、存储结构
可能有时候会让你画出存储结构
写在最后
今天就完活啦,付出,就有收获!