广义表
1.head是去掉最外层括号,保留第一个逗号前的东西
2.tail是去掉head所保留的那部分以及第一个逗号(不需要去掉括号)
以下以具体题目为例进行分析
例1.广义表A=(a,b,(c,d),(e,(f,g))),则Head(Tail(Head(Tail(Tail(A)))))的值为( )。
tail第一步:Tail(A)= (b,(c,d),(e,(f,g)))
tail第二步:Tail(Tail(A))= ((c,d),(e,(f,g)))
head第三步:Head(Tail(Tail(A)))= (c,d)
tail第四步:Tail(Head(Tail(Tail(A))))= (d)
head第五步:Head(Tail(Head(Tail(Tail(A)))))=d
广义表的深度与长度
1.长度
定义:广义表的长度,指的是广义表中所包含的数据元素的个数。
注:由于广义表中可以同时存储原子和子表两种类型的数据,因此在计算广义表的长度时规定,
广义表中存储的每个原子算作一个数据,同样每个子表也只算作是一个数据。
例1.在广义表 {a,{b,c,d}} 中,它包含一个原子和一个子表,因此该广义表的长度为 2。
例2.在广义表 {{a,b,c}} 中只有一个子表 {a,b,c},因此它的长度为 1。
2.深度
广义表的深度,可以通过观察该表中所包含括号的层数间接得到。
例1.,广义表 {{1,2},{3,{4,5}}} 中,子表 {1,2} 和 {3,{4,5}} 位于同层,此广义表中包含 3 层括号,因此深度为 3。