广义表
广义表是线性表的推广。
对于线性表而言,n个元素都是基本的单元素,而在广义表中,这些元素不仅可以是单元素,也可以是另一个广义表。
通俗的讲,在广义表中的元素,也可以是一个线性表。
如何去定义一个广义表?
typedef struct GNode{
int Tag; //标志域,0表示结点是单元素,1表示结点是广义表
union{ //子表指针域Sublist与单元素数据域Data复用,即共用存储空间
ElementType Data;
struct GNode *SubList;
}URegion;
struct GNode *Next; //指向后继结点
}GList;
多重链表
链表中的结点可能同时隶属于多个链表
1.多重链表中结点的指针域可能会有多个,如前面例子中包含了Next和SubList两个指针域。
2.但包含两个指针域的链表并不一定是多重链表,比如双向链表。
多重链表的广泛用途:
基本上如数、图这样相对复杂的数据结构都可以采用多重链表方式实现存储。