链表---广义表,多重链表

本文深入探讨了广义表和多重链表的概念,包括它们在数据存储中的应用,如二元多项式的表示,以及如何通过节点的tag、data、sublist和next属性来构造这些数据结构。此外,还讨论了多重链表的特点和用途,特别是在存储复杂数据结构如树和图方面的优势。

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

感谢博客 https://www.cnblogs.com/rookieJW/p/9028127.html
https://blog.youkuaiyun.com/mozha_666/article/details/79659426

广义表

二元多项式:f(x,y)=8x^12y^6+5x^12y^2+3x^3y^2+x+y=(8y^6+5y^2)x^12+3x^3y^2+x+y

节点:

tag: 0 表示结点是只含有x,1表示该节点含有y

data: 存放系数和指数

sublist:指向存放y信息节点

next:指向下一个节点

表示:

广义表是线性表的推广,也是由n个元素组成的有序序列。与线性表的差别:线性表中的元素都是存储单元素,而广义表中存储的元素不仅仅可以是单元素或另一个广义表(可以指向另一个线性表)。

广义表中结点的两种可能:

1. 单元素,需要有个域来存储改单元素的值。 2. 广义表需要有个域来指向另一个链表
typedef struct GNode *GList;
typedef struct GNode{
    //可以设置tag为0,union单元存的就是数据,为1存的就是指向另一广义表的指针
    int tag;
    union{
        ElementType data;
        GList sublist;
    }
    GList next;
}GNode;

多重链表

比如上面的结点:
属于2个链

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

多重链表中结点的指针域会有多个,但包含多个指针域的链表不一定是多重链表。如:双向链表。

1、什么是多重链表,就是链表里的结点可能隶属多个链表,最常见的就是十字链表,每个结点都有多个指针域,对应于多个链表嘛,但是反过来说,拥有多个指针域的结点的链表就是多重链表是不准确的,因为循环链表的结点都有2个指针域一个前驱一个后继,但是它就不是多重链表

2、多重链表有什么用途呢,比如存储树或者图等等复杂数据结构,所以学好各类线性表的操作是很有必要的,因为之后的很多复杂数据结构的存储结构都是以这个为基础

3、多重链表最典型的是以十字链表的形式存储二维数组

这里写图片描述

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值