广义表和多重链表(十字链表)

本文深入探讨了广义表的概念,它是线性表的推广,允许元素为单元素或另一个广义表,通过tag和union结构实现。同时介绍了多重链表,一种每个结点可属于多个链的链表结构,适用于树、图等复杂数据结构的存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

广义表(Generalized List)

  1. 广义表是线性表的推广
  2. 对于线性表而言,n个元素都是基本的单元素;
  3. 广义表中,这些元素不仅可以是单元素也可以是另一个广义表
typedef struct GNode *GList;
struct GNode{
    int tag;    /*标志域:0表示结点是单元素,1表示结点是广义表*/
    union{      /*子表指针域Sublist与单元素数据域Data复用,即共用存储空间*/
        ElementType Data;
        GList SubList;
    }URegion;
    GList Next;     /*指向后续结点*/
};

多重链表:链表中的结点可能同时隶属于多个链

  1. 多重链表中结点的指针域会有多个,如前面例子包含了Next和SubList两个指针域;
  2. 但包含两个指针域的链表并不一定是多重链表,比如在双向链表不是多重链表

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

Term和Head采用union结构,用tag区分

 

转载于:https://www.cnblogs.com/King-boy/p/10504781.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值