- 59
- 0
- 约1.68万字
- 约 55页
- 2017-04-03 发布于湖北
- 举报
5.4.1 广义表的存储结构 由于广义表中的数据元素具有不同的结构,通常用链式存储结构表示,每个数据元素用一个结点表示。因此,广义表中就有两类结点: ◆ 一类是表结点,用来表示广义表项,由标志域,表头指针域,表尾指针域组成; ◆ 另一类是原子结点,用来表示原子项,由标志域,原子的值域组成。如图5-13所示。 只要广义表非空,都是由表头和表尾组成。即一个确定的表头和表尾就唯一确定一个广义表。 相应的数据结构定义如下: typedef struct GLNode { int tag ; /* 标志域,为1:表结点;为0 :原子结点 */ union { elemtype value; /* 原子结点的值域 */ struct { struct GLNode *hp , *tp ; }ptr ; /* ptr和atom两成员共用 */ }Gdata ; } GLNode ; /* 广义表结点类型 */ 标志tag=0 原子的值 标志tag=1 表头指针hp 表尾指针tp 图5-13 广义表的链表结点结构示意图 (b) 表结点 (a) 原子结点 例: 对A=(),B=(e),C=(a, (b, c, d) ),D=(A, B, C),E=(a, E)的广义表的
原创力文档

文档评论(0)