- 广义表的中数据元素可以是原子,也可以是列表。
- 由于元素可以是原子也可以是列表,因此有两种结点类型。
因此用顺序存储表示不方便,通常采用链式存储结构,一个结点表示一个元素。
1、原子节点:标志域和值域
2、表结点:标志域,指示表头的指针域,指示表尾的指针域。

表头表尾法,每一个表都看做表头加上表尾。
把任何一个广义表、表结点都分解成表头表尾结构
typedef enum
{
ATOM, // 0,表示原子
LIST // 1,表示子表
}ElemTag;
typedef struct GLNode
{
ElemTag tag; //公共部分,用于区分原子节点和表结点
union //根据 tag 二选一
{
//要么是原子节点的值域,要么是表结点的头尾节点指针域
AtomType atom;
struct {
struct GLNode *hp, *tp } ptr

本文介绍了广义表的两种链式存储结构:表头表尾法和链表法,并通过实例详细解释了每种存储方式下广义表的构成及特点。
最低0.47元/天 解锁文章
8047

被折叠的 条评论
为什么被折叠?



