精华内容
下载资源
问答
  • 2011-11-16 09:32:52
    /*1.  已知矩阵A[5][5]是一个下三角矩阵,如下图
    要求编写算法把矩阵A采用压缩存储,存储到一维数组B[16]中,
    并且依次输出B中各元素的值以验证该算法功能已实现
    */
    #include<iostream>
    using namespace std;
    const int m=5;
    const int n=5; 
    const int c=16;
    int B[c];               //定义一维数组B[16],长度为16
    //初始化数组A[5][5]
    int A[m][n]={{1},{4,7},{6,9,5},{1,8,4,1},{2,3,0,9,6}};
    int main()
    {
    	int i,j;
    	int k;
    	cout<<"输出二维数组的三角矩阵:"<<endl;
    	for(i=0;i<m;i++)  //输出二维数组A的矩阵
    		{
    			for(j=0;j<n;j++)
    			cout<<A[i][j]<<" ";
    			cout<<endl;
    	}
    	cout<<endl;
    	//对三角矩阵进行压缩
    	for(i=0;i<m;i++)                //遍历三角矩阵
    		{
    			for(j=0;j<n;j++)
    			if(i>=j)				//如果行号大于等于列号
    			{   
    				k=i*(i+1)/2+j;		//求出各元素的下标
    
    				B[k]=A[i][j];		//存储元素
    				
    			}
    			else					//如果行号小于列号
    			{
    				k=c-1;				//将元素下标定为c-1
    				B[k]=0;				//元素的值存储为0
    			}
    			
    	}
    	cout<<"输出三角矩阵压缩后的一维矩阵:"<<endl;
    		for(k=0;k<c;k++)					//按顺序输出压缩后的元素
    		cout<<B[k]<<" ";
    		cout<<endl;
    	    system("pause");
    		return 0;
    }
    
    

    更多相关内容
  • 6. 三角矩阵压缩存储 7. 三角矩阵的压缩存储 8. 稀疏矩阵的压缩存储 8.1 顺序存储–三元组<行,列,值> 8.2 链式存储-十字链表法 9. 知识回顾 1. 知识总览 2. 一维数组的存储结构 3. 二维数组的...

    1. 知识总览

    在这里插入图片描述

    2. 一维数组的存储结构

    在这里插入图片描述

    3. 二维数组的存储结构

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    4. 普通矩阵的存储

    在这里插入图片描述

    5. 对称矩阵的压缩存储

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    6. 三角矩阵的压缩存储

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    7. 三对角矩阵的压缩存储

    在这里插入图片描述

    在这里插入图片描述

    8. 稀疏矩阵的压缩存储

    8.1 顺序存储–三元组<行,列,值>

    在这里插入图片描述

    8.2 链式存储-十字链表法

    在这里插入图片描述

    9. 知识回顾

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 数组矩阵压缩存储


    1 数组

    1.1 一维数组

    ElemType a[10]; //C语言中的一维数组,数据类型是ElemType
    

    在这里插入图片描述
    数组中的每个元素大小都相同,且存储时是连续存放的。数组元素a[i]的存放地址=Loc+i*sizeof(ElemType),其中0≤i<10。


    1.2 二维数组

    ElemType b[2][4]; //C语言中2行4列的二维数组,数据类型是ElemType
    

    上面数组的逻辑视角为:
    在这里插入图片描述
    二维数组有两种存储方式,分别是行优先存储和列优先存储,如下:
    在这里插入图片描述
    对于M行N列的二维数组b[M][N],设二维数组b的初始地址为Loc,则:

    (1)若按行优先存储,则b[i][j]的存储地址=Loc+(i*N+j)*sizeof(ElemType)。

    (2)若按列优先存储,则b[i][j]的存储地址=Loc+(j*M+i)*sizeof(ElemType)。


    2 矩阵

    2.1 普通矩阵

    下图为一个抽象的m×n阶矩阵:
    在这里插入图片描述
    可按【2.2 二维数组】一节中的二维数组存储——行优先存储和列优先存储。需要注意的是:描述矩阵元素时,行、列号通常从1开始;而描述数组时通常下标从0开始。


    2.2 特殊矩阵

    注意,本节及以下部分讨论的都是方阵

    2.2.1 对称矩阵

    若n阶方阵中任意一个元素aij都有aij=aji,则该矩阵为对称矩阵。按普通的存储方式即二维数组存储就浪费存储空间了。

    对称矩阵的压缩存储策略:只存储主对角线和下三角区或者主对角线和上三角区。
    在这里插入图片描述
    上图中上三角区为①,i<j;主对角线为②,i=j;下三角区为③,i>j。

    2.2.1.1 策略1

    存储策略:只存储主对角线+下三角区的元素,并且按行优先原则将各元素存入一维数组中,因此需要存储(1+n)*n/2个元素。存储是为了使用,因此存储方式要使得访问矩阵中的某个元素时能很快找到它。可以实现一个映射函数——将矩阵元素a[i][j]的下标映射为一维数组b[k]的下标,其中i、j从1开始到n,k从0到(1+n)*n/2-1。因此矩阵的a[i][j]元素对应于一维数组的:① i≥j时是b[i(i-1)/2+j-1];② i<j时是b[j(j-1)/2+i-1]

    2.2.1.2 策略2

    存储策略:只存储主对角线+下三角区的元素,并且按列优先原则将各元素存入一维数组中,因此需要存储(1+n)*n/2个元素。存储是为了使用,因此存储方式要使得访问矩阵中的某个元素时能很快找到它。可以实现一个映射函数——将矩阵元素a[i][j]的下标映射为一维数组b[k]的下标,其中i、j从1开始到n,k从0到(1+n)*n/2-1。因此矩阵的a[i][j]元素对应于一维数组的:① i≥j时是b[(2n-j+2)(j-1)/2+i-j];② i<j时是b[(2n-i+2)(i-1)/2+j-i]


    2.2.2 三角矩阵

    2.2.2.1 上三角矩阵

    上三角矩阵:除了主对角线和上三角区,其余的元素都相同,如下:
    在这里插入图片描述
    存储策略:按行优先原则将两个阴影部分合成的三角形区域的元素存入一维数组中,并在最后一个位置存储常量c,因此需要存储(1+n)*n/2+1个元素。可以实现一个映射函数——将矩阵元素a[i][j]的下标映射为一维数组b[k]的下标,其中i、j从1开始到n,k从0到(1+n)*n/2。因此矩阵的a[i][j]元素对应于一维数组的:① i≤j时是b[(2n-i+2)(i-1)/2+j-i];② i<j时是b[(1+n)*n/2]

    2.2.2.2 下三角矩阵

    下三角矩阵:除了主对角线和下三角区,其余的元素都相同,如下:
    在这里插入图片描述
    存储策略:按行优先原则将两个阴影部分合成的三角形区域的元素存入一维数组中,并在最后一个位置存储常量c,因此需要存储(1+n)*n/2+1个元素。可以实现一个映射函数——将矩阵元素a[i][j]的下标映射为一维数组b[k]的下标,其中i、j从1开始到n,k从0到(1+n)*n/2。因此矩阵的a[i][j]元素对应于一维数组的:① i≥j时是b[i(i-1)/2+j-1];② i<j时是b[(1+n)*n/2]


    2.2.3 三对角矩阵

    三对角矩阵又称带状矩阵:当|i-j|>1时,有a[i][j]=0,其中1≤i,j≤n。
    在这里插入图片描述
    存储策略:按行优先原则,只存储带状部分,因此需要存储3n-2个元素。可以实现一个映射函数——将矩阵元素a[i][j]的下标映射为一维数组b[k]的下标,其中i、j从1开始到n,k从0到3n-3。因此矩阵的a[i][j]元素对应于:① |i-j|>1时是0;② |i-j|≤1时是一维数组的b[2i+j-3]

    有一个问题,若已知数组下标k,如何得到矩阵的j,j?b[k]是数组中第k+1个元素,对应于矩阵的第i=⌈(k+2)/3⌉行第j=k-2i+3列的元素,⌈m⌉是对m向上取整。


    2.2.4 稀疏矩阵

    稀疏矩阵是非零元素远远少于矩阵元素的个数的矩阵,总之就是0特别多,下面是一个示例:
    在这里插入图片描述
    存储策略1:使用顺序存储三元组<行,列,值>,如下:
    在这里插入图片描述
    存储策略2:使用链式存储三元组<行,列,值>,即十字链表法,其中非零数据的结点如下:
    在这里插入图片描述
    全部结点如下:
    在这里插入图片描述
    上图中:绿色为向右域right,指向第i行的第一个元素,红色为向下域down,指向第j列的第一个元素。


    END

    展开全文
  • 矩阵压缩存储

    千次阅读 2021-11-22 23:53:16
    对称矩阵三角阵、带状矩阵矩阵)的压缩存储方法;稀疏矩阵的四种常用的压缩存储方法:三元组、伪地址、邻接表、十字链表这四种表示方法,一文打尽。

    ​ 矩阵是很多科学与工程计算问题中研究的对象。在本文中,我们感兴趣的不是矩阵本身,而是如何存储矩阵中的元,从而使矩阵的各种运算能有效的进行。

    ​ 对于矩阵的存储,一般而言都是使用数组来存储矩阵元。然而,在数值分析中,经常在数值分析中经常出现一些阶数很高的矩阵,同时在矩阵中有许多值相同的元素或者是零元素。有时为了节省存储空间,可以对这类矩阵进行压缩存储。所谓压缩存储是指:为多个值相同的元只分配一个存储空间;对零元不分配空间。

    ​ 假若值相同的元素或者零元素在矩阵中的分布有一定规律,则我们称此类矩阵为特殊矩阵;如果矩阵中非零元素的个数过低(一般认为少于5%),称为稀疏矩阵。下面分别讨论它们的压缩存储。

    1.数组

    ​ 在讨论矩阵前,需要先来回顾下数组的概念,在编程语言中,一般使用数组来存储矩阵。

    ​ 一般而言,我们常用到的数组都是一维数组、二维数组,逻辑表示分别如下:

    (a 0, a 1, ..., a n-1)
    [(a 0,0, a 0,1, ..., a 0,n-1),
    (a 1,0, a 1,1, ..., a 1,n-1),
    ...
    (a n-1,0, a n-1,1, ..., a n-1,n-1)]

    ​ 可见,二维数组是元素为一维数组的一维数组。(二维数组的每一行,看成二维数组中的一个元素)同理,我们可以把一个n维的数组定义为其数据元素为n-1维数组类型的一维数组

    ​ 数组一般采取顺序存储,在考研中涉及最多的就是数组元素下标的计算问题。一维数组比较简单,知道a0的位置,可以根据相对于a0的偏移量求出其后任一元素ai的位置。例如,a0存放在内存100的位置,则a0存放在100+i*sizeof(a[0])的位置。二维数组元素位置计算稍微复杂,要考虑行优先和列优先两种情况,下面进行详细介绍。

    行优先存储:定义二维数组 a:int a[4][5]。由下图可知,对于行优先,a[2][3]是第几个元素的求法为:行标2之前的行已填满元素,每行元素有5个,行标2所指的行的元素个数由列标指示出来,因此a[2][3]是第2x5+3+1=14个元素,a[2][3]之前有13个元素。

    列优先存储:对于列优先,a[2][3]是第几个元素的求法为:列标3之前的列已填满元素,每列元素有4个,列标3所指的列的元素个数由行标指示出来,因此a[2][3]是第3x4+2+1=15个元素,a[2][3]之前有14个元素。

    资源分配图

    2.矩阵

    资源分配图

    ​ 注意:在数据结构的考研题目中出现的矩阵第一个元素有的为a0,0有的为a1,1,大家在做题的时发要注意题目给出的定义。而考题中存放在C语言二维数组中的矩阵或者为明确说明时,第一个元素默认是a[0][0].

    ​ Am,n即为一个矩阵的逻辑表示,其中,m和n必须为常量,或者预先定义的宏常量,矩阵一般使用数组存储,因此矩阵定义语句如下:

    #define m 4
    #define n 5
    
    int A[m][n];
    

    ​ 下面讨论的矩阵可等价于二维数组。

    3.特殊矩阵

    ​ 相同的元素或者零元素在矩阵中的分布有一定规律,我们称此类矩阵为特殊矩阵。这里我们主要介绍三种最常见的特殊矩阵。

    3.1对称矩阵

    ​ 若n阶矩阵A中的元满足下性质:ai,j= aj,i ,0<= i, j<=n-1。

    ​ 对于对称矩阵,我们可以为每一个对称元分配一个存储空间,则可将n2个存储单元压缩到n(n+1)/2个空间中。下面我们以行优先存储其下三角(包含对角线)中的元。

    资源分配图

    ​ 假设以为数组sa[n(n+1)/2]作为n阶对称矩阵A的存储结构,则sa[k]和矩阵元ai,j之间存储一一对应关系:

    资源分配图

    ​ 对称矩阵A的压缩存储sa的结果如下:

    资源分配图

    3.2三角阵

    上三角阵为矩阵下三角部分(不包括对角线)元素全为c(c可为0)的矩阵。

    下三角阵为矩阵上三角部分(不包括对角线)元素全为c(c可为0)的矩阵。

    ​ 三角矩阵的存储方式和对称矩阵类似,以下三角矩阵为例,只需存储对角线及其以下部分的元素和其上三角中的一个元素c即可。假如其上三角部分的元素全为c,则其在一维数组中的存储结果如下图:

    资源分配图

    ​ 可见,只比对称矩阵多存储了一个元素。

    3.3对角矩阵

    ​ 下图左边所示为一个对角矩阵。右边为一个三对角矩阵,其特点是除主对角线以及其上下两条带状区域内的元素外,其余元素皆为c(c可为0)。

    资源分配图

    ​ 以三对角矩阵为例,其压缩存储到一维数组上,ai,j对应的一维数组中的下标k计算如下所示:

    资源分配图

    4.稀疏矩阵

    ​ 矩阵中非零元素的个数过低(一般认为少于5%),称为稀疏矩阵。

    ​ 注:不同的书中也有不同的定义,上述定义是严蔚敏书中给出的定义,不过不管怎样,其压缩存储的方法是一致的。

    ​ 对于稀疏矩阵的存储分为顺序存储和链式存储,本文只介绍常用的三元组、伪地址、邻接表、十字链表这四种表示方法。

    4.1三元组表示法

    ​ 三元组数据结构是一个长度为n,表内每个元素都有三个分量的线性表,其中三个分量分别为值、行下标和列下标。元素结构体定义如下:

    #define MaxSize = 1000
    //如果是其他类型,这里进行替换
    typedef Element int;
    //-- -- - 稀疏矩阵的三元组顺序表存储表示 - -- --
    typedef struct{
      Element val;
      int i,j;
    } Triple;
    typedef struct{
      Triple data[MaxSize+1]; //非零元三元组表,data[0]未用
      int mu,nu,tu;           //矩阵中的行数、列数、非零元的个数
    } TSMatrix;
    

    ​ 一个稀疏矩阵A如下图左所示,其对应的三元组表示如下图右所示:

    资源分配图

    4.2伪地址表示法

    ​ 伪地址即元素在矩阵中按照行优先或者列优先存储的相对位置。用伪地址方法存储稀疏矩阵和三元组方法相似,只是三元组每一行中有两个存储单元存放位置,而伪地址只需要一个。对于一个mxn的稀疏矩阵A,使用行优先压缩存储,元素A[i][j]的伪地址计算方法为n(i-1)+j。根据这个公式,不仅可以计算矩阵中一个给定元素的伪地址,还可以反推出给定元素在原矩阵中的真实地址。

    ​ 注:其实就是按照行优先、列优先的方法,值存储矩阵中的非零元。

    资源分配图

    4.3邻接表表示法

    ​ 邻接表表示法将矩阵种每一行非零元素串成一个链表,链表结点中有两个分量,分别表示该结点对应的元素值和列下标。

    ​ 注:邻接表表示法是用与存储图的重要方法之一,这里先简单连接下概念。

    ​ 对于矩阵A,使用邻接表表示如下图所示:

    资源分配图

    4.4十字链表表示法

    ​ 在稀疏矩阵的十字链表存储结构中,矩阵的每一行用一个带头结点的链表表示,每一列也用一个带头结点的链表表示,这种存储结构中的链表结点都有5个分量;行分量、列分量、数据域分量、指向下方结点的指针、指向右方结点的指针。十字链表结点结构如下图所示:

    资源分配图

    ​ 矩阵A的十字链表示意图,如下图所示。十字链表是由一些单链表纵横交织而成的,其中最左边和最上边是头结点数组,不存储数据信息,左上角的结点可以视为整个十字链表的头结点(注:此节点可以没有),它有5个分量,分别存储矩阵的行数、列数、非零元素个数以及指向两个头结点数组的指针。十字链表结点中除头结点以外的结点就是存储矩阵非零元素相关信息的普通结点。

    资源分配图

    ​ 根据上面的描述,我们知道十字链表有有两类结点:头结点和普通结点,其结构定义如下:

    //普通结点
    typedef struct OLNode{
      int             i,j;           //非零元的行标、列标
      Element         e;
      struct OLNode   *right, *down; //指向右方结点、下方结点的指针
    }
    //头结点
    typedef struct OLNode{
      struct OLNode   *rhead, *chead;     //指向两头结点数组的指针
      int             m, n, k;            //矩阵的行数、列数及非零元的个数
    }
    

    5.练习题

    ​ 1.设二维数组A[6][10],每个数组元素占4个存储单元,若按行优先存储存放的数组元素A[3][5]的存储地址是1000,求A[0][0]的存储地址。

    答案:参考第一小节内容,A[0][0]的地址为1000-35*4=860。

    1. 数组A中,每个元素的长度为3B,行下标i从0-7,列下标j从0-9,从首地址开始连续在存储器内,则存放该数组至少需要的单元数是()。
      A.80 B.100 C.240 D.270

    答案:C

    1. 设矩阵A是一个对称矩阵,为了节省存储空间,将其下三角部分按照行优先存放在一维B[0,···,n(n+1)/2-1]中,对于下三角部分中的任一元素aij(i≥j,i和j从1开始取值),在一维数中的下标k的值是()。
      A. i(i-1)/2+j-1 B. i(i+1)/2+j C.i(i+1)/2+j-1 D. i(i-1)/2+j

    答案:A

    ​ 注:答案隐藏在题目下方。


    ​ 又到了分隔线以下,本文到此就结束了,本文内容全部都是由博主根据自身理解与对考研资料进行的整理,仅作为参考,大佬有什么问题,可以评论区留言,如果有什么错误,还请批评指正。

    ​ 本专栏为数据结构知识,喜欢的话可以持续关注,如果本文对你有所帮助,还请还请点赞、评论加关注。

    ​ 有任何疑问,可以评论区留言。

    展开全文
  • 三角矩阵储存为一维数组

    千次阅读 2017-12-24 19:43:52
    压缩矩阵 ,将矩阵存储为一维矩阵,同时...你应该是用一个一维数组存储数据,这样才能达到节省空间的目的,然后输出的时候显示式n*n的矩阵。。。。然后我又重新改了,以下是我的答案,如有错误,添加微信macforyou1
  • 数据结构-二维数组-三角矩阵压缩存储

    万次阅读 多人点赞 2017-09-29 16:01:41
    数据结构-二维数组-三角矩阵压缩存储一、什么是三角矩阵前情提要三角矩阵也是属于一类特殊的二维数组矩阵,同样也用压缩的存储方式,能够更好的节约存储空间,二维数组的三角矩阵分为上三角矩阵和下三角矩阵,其实现...
  • 一维数组的地址计算 设每个元素的大小是size,首元素的地址是a[1],则 a[i] = a[1] + (i-1)*size 若首元素的地址是a[0] 则a[i] = a[0] + i*size 二维数组的地址计算 (m*n的矩阵) 行优先 设每个元素的大小是size,首...
  • 设aijn阶对称矩阵A中i行j列的数据元素,k为一维数组va的下标序号,则其数学映射关系: 注意:数学中,n阶对称矩阵元素aij的下标满足条件:1≤i≤n和1≤j≤n 实践 具体代码如下: #include <stdio.h&...
  • 数据结构--三角矩阵压缩存储

    千次阅读 多人点赞 2020-01-19 13:56:47
    三角矩阵 三角矩阵的常用压缩方式有两...以下三角矩阵的线性压缩存储为例,进行实现: package pers.zhang.array; /** * @author zhang * @date 2020/1/19 - 13:34 * * 下三角矩阵线性压缩存储 */ public cl...
  • 三角矩阵压缩存储

    万次阅读 2017-11-01 11:50:12
    输出压缩后的一维数组;根据输入的行号列号,从压缩矩阵中计算出元素的值 #include<stdio.h> int main(){ inta[5][5]={ //定义原二维数组 1,0, 0, 0, 0, 5,9, 0, 0, 0, 4,6,...
  • 三角矩阵压缩矩阵

    2019-09-22 14:33:13
    以上就是下三角矩阵,在一维数组进行存储,下标k 的公式很好推导,我们利用数学中的等差数列就可以推导出来。(数组中元素最开始的下标0) 来说一下上三角矩阵,上三角矩阵一维数组存储的下 标公式。 ...
  • 4.2 矩阵的压缩存储(二) 4.2.1特殊矩阵 2.三角矩阵 以主角线划分,三角矩阵有上三角和下三角两种。下三角矩阵正好相反,它的主角线上方均常数c或零;上三角矩阵是指矩阵的下三角(不包括角线)中的元素均...
  • // 对称矩阵的输入 void Symmetric_input(int **A, int n, int B[]) { int i, j, k = 0; // 将对称元素及对称轴上的元素存入数组B for (i = 0; i < n; i++) for (j = 0; j < i + 1; j++)
  • 2-1 设有个10阶的对称矩阵A,采用压缩存储方式,以行序主存储,a11元素,其存储地址1,每个元素占个地址空间,则a85的地址() A.13 B.33 C.18 D.40 答:B; 行序主存储,在此存储下三角矩阵元素...
  • 对于对称矩阵,用一维数组存储三角或者下三角。本文只实现了存储三角,如果只存储三角,道理是一样的。 存储三角时,又分为按行优先存储和按列优先存储 按行优先存储:把下三角一行一行的存储一维数组中...
  • 数组了,数组在我们编程中用到很多,因为它是最基本的存储方法,它分为一维数组和二维数组,数组和之前学过的一样,我们也是可以看作一个线性表,因为数组是一个有序的序列,接下来我们简单学习一下数组和稀疏矩阵。...
  • 编写一个算法,将一个以行为主序存储的一维数组转换以列为主序压缩存储一维数组。例如,设有n×n的上三角矩阵A的上三角元素已按行为主序连续存放在数组b中,请设计一个算法Trans将b中元素按列为主序存放在数组c...
  • 数据结构-二维数组-特殊矩阵压缩存储一、什么是压缩存储计算机中的存储就是将数据写到主存储器(或者外部辅存)中用于即将到来的计算服务。对于主存储器来说,存储空间十分珍贵,在矩阵的表示中有几类特殊的矩阵,如:...
  • 矩阵压缩存储通常是将二维数据存储的矩阵映射到一维数组之中。 对称矩阵 若n阶矩阵满足a ij = a ji (1<=i,j<=n),称为n阶对称矩阵。 若n阶矩阵为对称矩阵,那么实现压缩存储,只需要对矩阵的含角线的...
  • 2010-11-14 00:42在这里就不解释什么是三矩阵了,直接上代码。1#include 2#include 3#define dataType int4#define n 456int main()7{8 dataType A[n][n]={9 {1,4,0,0},10 {3,4,1,0},11 {0,2,3,4},12 {0,0,...
  • 数组对特殊矩阵压缩存储一数组1、定义2、与线性表的关系3、存储结构二、特殊矩阵的压缩存储1、特殊矩阵2、对称阵的压缩存储3、三角阵的压缩存储 一、数组 1、定义 数组是由 n(n>=1) 个相同类型的元素构成的...
  • #include <...//存储n行的对称矩阵,将存储结果放入数组s中返回 void TraverseSymmetricMatrix(ElemType* s, int n);//将存储数组s中的n行对称矩阵遍历 void UpperTriangularMatrixStore(int n.
  • 存储原理 对三角矩阵:|i-j|<=1的位置上非零元素,也就是我们要存储的元素;...如果要存入一维数组中,那么还要减一,即在数组中的位置2i+j-3。   代码 #include <iostream> #include<stdl
  • 对称矩阵压缩存储

    千次阅读 2017-03-17 15:46:21
    对称矩阵压缩存储
  • 文章目录7. 数组 - 数组存储结构、矩阵压缩存储方式、矩阵转置算法7.1 数组存储...根据数组中存储数据之间逻辑结构的不同,数组可细分为一维数组、二维数组、…、n 维数组。 数组中数据的存储有两种先后存储方式: 以
  • 上三角形数组转换为一维数组

    千次阅读 2013-12-09 11:44:28
    (1)将大小n*n的上三角数组转换成以行主的一维数组,且不存储内容0的元素! data[i][j]的位置=[n+(n-i+1)]*i/2+(j-i)   (2)将大小n*n的上三角数组转换成以列主的一维数组,且不存储内容0的元素! data...
  • 要求n阶下半三角矩阵采用一维数组压缩存储(即只存储下半三角)。 程序先从键盘(或字符文件)输入n值,建立三个矩阵的一维数组动态存储结构,然后从键盘(或字符文件)输入两个半三角矩阵,最后输出计算结果到屏幕上(或...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,294
精华内容 1,717
关键字:

对三角矩阵进行压缩存储为一维数组