< 今日知识点 >
- 广义表
- 多重链表
·
·
·
·
—01 广义表
- 广义表是线性表的推广
- 对于线性表而言,n个元素都是基本的单元素
- 广义表中,这些元素不仅可以是单元素也可以是另一个线性表
代码:
typedef struct GNode *GList;
struct GNode{
int Tag; //标志域:0表示节点是单元素,1表示是广义表
union{ //子表指针域Sublist与单元素数据域Data复用,即共用储存空间
ElementType Data;
GList SubList;
}URegion;
GList Next; //指向后继节点
};
示意图:
—02 多重链表
**多重链表:**链表中的节点可能同时隶属多个链
- 多重链表中节点的指针域可能会有多个,如前面例子中包含了Next和SubList两个指针域
- 但是包含两个指针域的链表不一定是多重链表,比如双向链表不是多重链表
多重链表有广泛的用途:
基本上如树、图这种相对复杂的数据结构都可以用多重链表的方式实现存储。
附:文中所有PPT图片均来自中国大学mooc 浙江大学《数据结构》课程!!