一、广义表
广义表是线性表的推广。对于线性表而言,n 个元素都是基本的氮元素。在广义表中,这些元素不仅可以是单元素也可以是另一个广义表。
struct GNode
{
int Tag; // 标志域:0表示结点是单元素,1表示结点是广义表
union // 子表指针域SubList与单元素于Data复用,即公用存储空间
{
ElementType Data;
GList SubList;
} URegion;
GList Next; // 指向后继结点
};
typedef struct GNode *GList;
二、多重链表
多重列表 是指链表中的结点可能会同时隶属于多个链。多重列表中结点的指针域会有多个,但是包含两个指针域的链表不一定是多重链表,例如双向链表包含了两个指针域,但它不是多重列表。
多层链表的用途十分广泛,基本上如树、图这样相对复杂的数据结构都可以采用多重链表方式实现存储。
矩阵可以使用二维数组进行表示,但是二维数组表示由两个缺陷:一是对数据的 大小需要事先确定,二是对于“稀疏矩阵”,将会造成大量的 存储空间浪费。因此我们可以可以采用一种典型的多重链表 —— 十字链表 来存储稀疏矩阵。它只存储矩阵的非 0 元素项。它存储的结点的数据域为:行坐标 Row、列坐标 Col、数值 Value。每个结点通过两个指针域:行指针(或称为向右指针)Right 和 列指针(或称为向下指针)Down,把同行、同列串起来。
标签:03,结点,多重,元素,链表,广义,指针 From: https://www.cnblogs.com/kurome/p/17232758.html