广义表((a,b,c,d))的表头和表尾分别是什么?求解释~
广义表((a,b,c,d))的表头是(a,b,c,d),表尾是()。
根据广义表对表头和表尾的定义可知:
(1)对任意一个非空的广义表,其表头可能是单元素,也可能是广义表。
(2)而其表尾一定是广义表。
(3)注意表尾的深度(即括号的嵌套层数)。
(4)表尾是由除了表头以外的其余元素组成的广义表,所以,需要在表尾的直接元素外面再加一层括号。
扩展资料
广义表的存储结构
由于广义表(a1,a2,a3,…an)中的数据元素可以具有不同的结构(或是原子,或是广义表),因此,难以用顺序存储结构表示,通常采用链式存储结构,每个数据元素可用一个结点表示。
由于广义表中有两种数据元素,原子或广义表,因此,需要两种结构的结点:一种是表结点,用以表示列表;一种是原子结点,用以表示原子。
若列表不空,则可分解成表头和表尾;反之,一对确定的表头和表尾可唯一确定列表。由此,一个表结点可由三个域组成:标志域、指示表头的指针域和指示表尾的指针域;而原子结点只需两个域:标志域和值域。
表头是(a,b,c,d),一个子表。
表尾是空表(),长度为0。
关于广义表的重要结论:
列表的元素可以是子表,而子表的元素还可以是子表,也就是说广义表是可以嵌套定义的。
扩展资料:
相关延伸:广义表的运算:
在此,只讨论广义表的两个特殊的基本运算:取表头head(Ls)和取表尾tail(Ls)。
根据表头、表尾的定义可知:任何一个非空广义表的表头是表中第一个元素,它可以是原子,也可以是子表,而其表尾必定是子表。
【例】
head(L)=a, tail(L)=(b)
head(B)=A, tail(B)=(y)
由于tail(L)是非空表,可继续分解得到:
head(tail(L))=b, tail(tail(L))=()
对非空表A和(y),也可继续分解。
即(a,b,c,d)
表头是(a,b,c,d),一个子表
表尾是空表()长度为0