• 稀疏矩阵的存储方式


    稀疏矩阵就是指一个矩阵中的大部分元素都是0或者是某一个相同的元素,而稀疏矩阵往往有一些有规律的形式,比如上三角、下三角等等,这种有规律的矩阵又称为特殊矩阵。
    特殊矩阵的储存需要根据特殊矩阵哪点特殊,然后用数学的手段来进行存储,这里就不展开了。
    我们只讲一般情况下的稀疏矩阵的储存方式。

    存储方式常见的有两大类,大家也都知道,分别是顺序存储结构和链式存储结构。

    对于稀疏矩阵,顺序存储结构中常用的方式有两种:三元组表示法,伪地址表示法

    三元组表示法,就是定义一个数据结构,里面保存了该元素的横坐标、列坐标,以及该元素的值,这也是最简单的一种表示方法。

    伪地址表示法比上面高级一点,略微省了一些空间。伪地址表示法呢也需要定义一个结构体,里面一个成员变量是保存的元素的值,另外只需要一个成员变量用于保存它的伪地址即可。
    那么伪地址是什么呢?伪地址就是该元素相对于这个矩阵保存的首地址的偏移量,这样只要经过简单计算就可以知道其对应的横纵坐标了。

    而链式存储也有两种常见的方法,分别是邻接表表示法和十字链表法。

    领接表表示法如下图所示,具体细节请自行网络查询吧。邻接表也广泛用于图的存储中。
    下图来自:https://blog.csdn.net/huangshuai147/article/details/50849476
    在这里插入图片描述

    而十字链表法可以说是邻接表的一个变形,它的链表结构就像“十”字一样,因此而得名。它用于访问数据比之邻接表要方便,但是每个节点多了两个地址指针。十字链表法也常用于有向图的存储。
    如下图所示为十字链表的每个节点的结构:
    (以下两张图片来自于:https://blog.csdn.net/xiuceliu/article/details/53358974)
    在这里插入图片描述
    下图为一个十字链表的例子:
    在这里插入图片描述

  • 相关阅读:
    struts-spring 整合
    Spring与Struts2的整合
    three.js 3d 智慧园区
    前端框架理解
    Flutter仿照airbnb创建app
    软件、语言的安装
    python功能
    python创建项目
    安装python
    mysql的安装和使用
  • 原文地址:https://www.cnblogs.com/yinyoupoet/p/13287439.html
Copyright © 2020-2023  润新知