首页 > 其他分享 >03. 广义表多重链表

03. 广义表多重链表

时间:2023-03-19 12:12:26浏览次数:35  
标签:03 结点 多重 元素 链表 广义 指针

一、广义表

  广义表是线性表的推广。对于线性表而言,n 个元素都是基本的氮元素。在广义表中,这些元素不仅可以是单元素也可以是另一个广义表。

struct GNode
{
    int Tag;        // 标志域:0表示结点是单元素,1表示结点是广义表
    union           // 子表指针域SubList与单元素于Data复用,即公用存储空间
    {
        ElementType Data;
        GList SubList;
    } URegion;
    GList Next;     // 指向后继结点
};

typedef struct GNode *GList;

img

二、多重链表

  多重列表 是指链表中的结点可能会同时隶属于多个链。多重列表中结点的指针域会有多个,但是包含两个指针域的链表不一定是多重链表,例如双向链表包含了两个指针域,但它不是多重列表。

  多层链表的用途十分广泛,基本上如树、图这样相对复杂的数据结构都可以采用多重链表方式实现存储。

  矩阵可以使用二维数组进行表示,但是二维数组表示由两个缺陷:一是对数据的 大小需要事先确定,二是对于“稀疏矩阵”,将会造成大量的 存储空间浪费。因此我们可以可以采用一种典型的多重链表 —— 十字链表 来存储稀疏矩阵。它只存储矩阵的非 0 元素项。它存储的结点的数据域为:行坐标 Row、列坐标 Col、数值 Value。每个结点通过两个指针域:行指针(或称为向右指针)Right列指针(或称为向下指针)Down,把同行、同列串起来。

标签:03,结点,多重,元素,链表,广义,指针
From: https://www.cnblogs.com/kurome/p/17232758.html

相关文章