数据结构--矩阵

这篇具有很好参考价值的文章主要介绍了数据结构--矩阵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

第七话  数据结构之特殊矩阵

文章目录

  • 一、了解什么是数组
  • 二、数组的基本特征
  • 三、上下三角矩阵
    • 1.上三角矩阵
    • 2.下三角矩阵
    • 3.实现运用
  • 四、稀疏矩阵
  • 五、总结

前言

数组和广义表,可看成是线性表的扩展。即线性表中的数据元素既可以是单个元素,也可以是一个线性结构。数组中的每个数据元素可用类型相同的数组来表示;广义表则比较灵活,每个数据元素可以是不在分的原子类型,也可以是子表。数组和广义表都是常用的数据结构,在相关领域有着广泛的应用。

一、了解什么是数组?

数组是一种很多高级语言都支持的、应用广泛的数据类型,可以看作线性表的推广。数组作为一种数据类型。从逻辑结构上看,数组可以看成是一般线性表的特殊形式;二维数组可以看成是线性表的线性表。

二、数组的基本特征

1.不变性

    数组具有固定格式和数量,每个数据元素用唯一的一组下标来标识。因此,在数组上不能做插入、删除元素的操作。

2、顺序存储

    由于数组具有一经生成即长度固定、连续存放的特性,所以一般都采用顺序存储结构来存储。

三、数组的上下三角矩阵

1、上三角矩阵 

        数据结构矩阵,数据结构,python,pandas,开发语言,数据结构,算法

#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
    int a[N*(N+1)/2+1] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,50};
    int i,j;
    for(i=0;i<N;i++){
        for(j=0;j<N;j++){
            if(i>j){
                printf("%3d",a[N*(N+1)/2]);
            }else{
                printf("%3d",a[i*(2*N-i+1)/2+j-i]);
            }
        }
        printf("\n");
    }
    return 0;
}

 在主函数实现如下:

数据结构矩阵,数据结构,python,pandas,开发语言,数据结构,算法 

 2、下三角矩阵

数据结构矩阵,数据结构,python,pandas,开发语言,数据结构,算法

#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
    int a[N*(N+1)/2+1] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,50};
    int i,j;
    for(i=0;i<N;i++){
        for(j=0;j<N;j++){
            if(i>=j){
                printf("%3d",a[i*(i+1)/2+j]);
            }else{
                printf("%3d",a[N*(N+1)/2]);
            }
        }
        printf("\n");
    }
    return 0;
}

在主函数中实现如下: 

 数据结构矩阵,数据结构,python,pandas,开发语言,数据结构,算法

四、稀疏矩阵

1、根据如下图来创造一个稀疏矩阵 

数据结构矩阵,数据结构,python,pandas,开发语言,数据结构,算法

图的意思为:

总共有6个非零元素

在第2行第1列有一个元素6,

在第2行第9列有一个元素2

在第3行第6列有一个元素8

以此类推...

 形成如下图的稀疏矩阵

数据结构矩阵,数据结构,python,pandas,开发语言,数据结构,算法

 

#include <stdio.h>
#include <stdlib.h>
#define maxsize 15
typedef struct{
    int i;
    int j;
    int v;
}node;
typedef struct{
    node date[maxsize];
    int row;
    int col;
    int count;
}Matrix;
int main(void)
{
    Matrix a;
    a.date[0].i = 1;
    a.date[0].j = 0;
    a.date[0].v = 6;
    a.date[1].i = 1;
    a.date[1].j = 8;
    a.date[1].v = 2;
    a.date[2].i = 2;
    a.date[2].j = 5;
    a.date[2].v = 8;
    a.date[3].i = 4;
    a.date[3].j = 2;
    a.date[3].v = 3;
    a.date[4].i = 4;
    a.date[4].j = 3;
    a.date[4].v = 5;
    a.date[5].i = 6;
    a.date[5].j = 7;
    a.date[5].v = 9;
    a.row = 9;
    a.col = 9;
    a.count = 6;
    int k,n,m;
    int flag;
    for(k=0;k<a.row;k++){
        for(n=0;n<a.col;n++){
            flag = 0;
            for(m=0;m<a.count;m++){
                if(k==a.date[m].i&&n==a.date[m].j){
                    printf("%3d",a.date[m].v);
                    flag=1;
                    break;
                }
            }
        if(flag==0){
            printf("%3d",0);
        }
        }
        printf("\n");
    }
    return 0;
}

在主函数中实现如下: 

 数据结构矩阵,数据结构,python,pandas,开发语言,数据结构,算法


五、总结

1、特殊矩阵的压缩存储

针对三角矩阵,主要掌握进行压缩存储时的下标变换公式

2、稀疏矩阵的压缩存储

稀疏矩阵的压缩存储,一般用三元组的顺序存储,少数用十字链表存储文章来源地址https://www.toymoban.com/news/detail-595376.html

到了这里,关于数据结构--矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】稀疏矩阵的压缩存储(三元组表、十字链表)(C语言)

    稀疏矩阵 是指矩阵中大多数元素为零的矩阵。从直观上讲,当非零元素个数低于总元素的30%时,这样的矩阵为稀疏矩阵。 1.1 三元组表的存储结构 稀疏矩阵的三元组表表示法是指只存储非零元素,同时存储该非零元素在矩阵中所处的行号和列号的位置信息。 为方便处理,将

    2023年04月16日
    浏览(31)
  • 数组:矩阵快速转置 矩阵相加 三元组顺序表/三元矩阵 随机生成稀疏矩阵 压缩矩阵【C语言,数据结构】(内含源代码)

    目录 题目: 题目分析: 概要设计: 二维矩阵数据结构: 三元数组三元顺序表顺序表结构: 详细设计: 三元矩阵相加: 三元矩阵快速转置: 调试分析: 用户手册: 测试结果:  源代码: 主程序:  头文件SparseMatrix.h:  头文件Triple.h: 总结: 稀疏矩阵A,B均采用 三元组

    2023年04月26日
    浏览(52)
  • 【C语言\数据结构】图dijkstra最短路径 邻接矩阵(无项、有权)代码简单实现深度解析

    这个代码是在图的邻接矩阵(无项、有权)的代码的基础上,添加了dijkstra最短路径函数,并且修改测试用例和主函数代码,图的邻接矩阵(无项、有权)的代码具体请查看 【C语言数据结构】图之邻接矩阵(无向、有权)代码简单实现,这里就不过多赘述。 我们用一个案例

    2024年02月03日
    浏览(41)
  • 【数据结构与算法系列5】螺旋矩阵II (C++ & Python)

    给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 示例 2: 提示: 1 = n = 20 使用和二分法一样的思想,确定循环不变量,确定是左闭右开,还是左闭右闭合,本次使用的是左闭右开 C++ 实现: python 实现:

    2024年02月09日
    浏览(28)
  • 08-pandas 入门-pandas的数据结构

    要使用pandas,你首先就得熟悉它的两个主要数据结构:Series和DataFrame。虽然它们并不能解决所有问题,但它们为大多数应用提供了一种可靠的、易于使用的基础。 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)

    2024年02月11日
    浏览(27)
  • 【玩转pandas系列】pandas数据结构—DataFrame

    大家好!我是一朵向阳花(花花花)🍭,本期跟大家分享的知识是 pandas 数据结构——DataFrame。 作者的【 Python 数据分析】专栏正在火热更新中🔥,如果本文对您有帮助,欢迎大家点赞 + 评论 + 收藏 ! 每日金句分享: 慢慢来,谁还没有一个努力的过程。』—— pony「网易云

    2024年02月15日
    浏览(26)
  • 【玩转pandas系列】pandas数据结构—Series

    大家好!我是一朵向阳花(花花花),本期跟大家分享的知识是 pandas 数据结构——Series。 作者的【 Python 数据分析】专栏正在火热更新中,如果本文对您有帮助,欢迎大家点赞 + 评论 + 收藏 ! 每日金句分享: 愿你有一天,能和你最重要的人重逢。』—— 艾拉「可塑性记忆

    2024年02月15日
    浏览(28)
  • Python语言的数据结构

        🎂在我们的Python语言当中所谓的数据结构其实就是一些存储数据的类型。就比如说我们C语言当中的数组和结构体一样。我们Python语言当中的数据类型包括列表,元组,字典,集合,字符串五种形式。我们使用这四种不同的数据类型可以对数据进行不同的处理操作。接下

    2024年02月06日
    浏览(29)
  • 【数据分析 - 基础入门之pandas篇②】- pandas数据结构——Series

    大家好!我是一朵向阳花(花花花),本期跟大家分享的知识是 pandas 数据结构——Series。 作者的【 Python 数据分析】专栏正在火热更新中,如果本文对您有帮助,欢迎大家点赞 + 评论 + 收藏 ! 每日金句分享: 愿你有一天,能和你最重要的人重逢。』—— 艾拉「可塑性记忆

    2024年02月13日
    浏览(32)
  • 【数据分析 - 基础入门之pandas篇③】- pandas数据结构——DataFrame

    大家好!我是一朵向阳花(花花花)🍭,本期跟大家分享的知识是 pandas 数据结构——DataFrame。 作者的【 Python 数据分析】专栏正在火热更新中🔥,如果本文对您有帮助,欢迎大家点赞 + 评论 + 收藏 ! 每日金句分享: 慢慢来,谁还没有一个努力的过程。』—— pony「网易云

    2024年02月16日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包