矩阵和广义表概念相关

本文详细介绍了稀疏矩阵的两种存储结构——COO三元组矩阵和OPT链式矩阵(十字链表),包括它们的基本存储方式、矩阵的打印和转置操作。同时,深入探讨了广义表的定义、存储结构以及具体示例,帮助理解这两种数据结构在信息技术领域的应用。
摘要由CSDN通过智能技术生成

矩阵和广义表


一、COO三元组矩阵

(1)基本存储结构

int n , m ,t     //n,m为mat矩阵的行数和列数 ,t是稀疏矩阵的非零元素个数
int mat[t][3]       //mat为被压缩的稀疏矩阵,只存非零元素 ,每个元素数组中均有3个元素,表示非零元素的行数

一般存储时按照行优先顺序存储,即mat第一个角标小,为行数小的

例如如下矩阵

 

它的存储形式为

 

(2)矩阵的打印

(3)矩阵的转置

可以参考一下哔站的视频教程https://www.bilibili.com/video/BV11p411d786

二、OPT链式矩阵(十字链表)

(1)基本存储结构

typedef struct _opt
{
    int value;//值域
    int i, j;//存位置
    struct _opt * down , * right;  //表示指向同列的(下一行)的非零元素的节点,同行(下一列)也就是右边
}opt,* popt;

在自己的思路里面,只有一个存列表头的循环的链表,没有行表头(因为可以直接用循环实现)

仍用上面的矩阵举例

 

则对应的图形结构为

三、广义表

(1)基本存储结构

(a)基本定义:广义表由两部分组成,表头和子表,其中表头是表中的第一个元素,子表(表尾)即为在这个广义表中除去表头的所有元素 ;而不可再分的广义表就是原子

eg: A(a,b) 表头为a,子表为(b)(子表一定是一个表,不论是原子还是广义表),a,b分别也是原子

(b)定义

typedef struct _list
{
    int tag;//标志该节点是原子还是广义表
    union
    {
        int value;//这个只有原子才有值
        struct
        {
            struct _list* head;//这两个指针只有广义表才有
            struct _list* tail;  
        }ptr;
    }
};

(2)举例助解

(1)A=(a, b, c, d)

(2)B=(a, (b, (c)), d)

(3)D=(a, (b, ( ), c), ((d), e))

(4)E = ( (((a), b)), ( ( ( ),(d)), (e f) ) )

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

robinbird_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值