广义表也是一种特殊的线性表,与线性表相比表中的数据元素可以是具体数据也可以是列表。
记住:LS=(a1,a2,...,an)。
广义表中ai为具体数据被称为 原子,广义表中ai为列表被称为 子表。
若作为广义表中子表是该广义表本身,可称广义表是递归的,此广义表实际上是无限的列表。
若广义表非空,表中的第一个元素 a1 为表头(Head),其余的元素(a2,...,an)为表尾(Tail)。
因此表头可以为原子或者子表,表尾一定为子表。
若LS=( ),该广义表为空表。
若LS=( ( ) ),该广义表表长为1,表头、表尾均为空表 ( ) 。
广义表的不同元素导致广义表一般采用链式存储结构。
结点表示如下:
类型标志: tag=1 表结点 ;tag=0 原子结点。
hp:指向表头的地址 ;tp:指向表尾的地址 ;atom:原子结点的值域。
表结点:
tag=1 | hp | tp |
原子节:点原子结点也可以不包含表头地址tp,只有两部分
tag=0 | hp | atom |
点原子结点也可以不包含表头地址tp,只有两部分
tag=0 | atom |