//广义表的存储结构
//1.头尾链表存储表示
typedef enum {ATOM,LIST} ElemTag;//0:原子,1:子表
typedef struct GLNode
{
ElemTag tag;//标志域,公共部分,用于区分原子结点和表结点
union
{
AtomType atom;//atom是原子结点的值域,AtomType由用户定义
struct
{
struct GLNode *hp,*tp;
}ptr;//表结点的表头和表尾指针域
};
}*GList;//广义表类型
//2.扩展线性链表存储表示
typedef enum{ATOM,LIST} ElemTag;//0:原子,1:子表
typedef struct GLNode
{
ElemTag tag;//标志域,分原子和表结点
union//原子结点和表结点的联合部分
{
ATomType atom;//atom是原子结点的值域,AtomType由用户定义
struct GLNode *hp;//表结点的表头指针
};
struct GLNode *tp;//相当于线性链表的next,指向下一个元素结点;
}*GList;