㈠ 数据结构特殊矩阵压缩存储问题
这个问题出在下标的问题上吧,第一个问题,明确说明第一个非零元素a(1,1)存于B[0]中,所以推导时没问题。
第二个问题并没有说第一个非零元素a(1,1)存于B[0]中,但大多教材推导是,是将第一个非零元素a(0,0)存于B[0]中,所以公式就不一样了,你的推导逻辑没问题。
㈡ 将10阶对称矩阵压缩存储到一维数组
C
((100-10)/2)+10
㈢ 矩阵的压缩存储是什么
二维数组在形式上是矩阵,因此一般用二维数组来存储矩阵。在不压缩存储的情况下,矩阵采用按行优先或按列优先方式存储,占用的存储单元数等于矩阵的元素个数。在实际应用中,经常出现一些阶数很高的矩阵,同时在矩阵中非零元素呈某种规律分布或者矩阵中有大量的零元素,若仍然用常规方法存储,可能存储重复的非零元素或零元素,这将造成存储空间的大量浪费。因此对这类矩阵进行压缩存储,从而合理地利用存储空间。
为了节省存储空间,可以利用特殊矩阵的规律,对它们进行压缩存储,也就是说为多个值相同的元素只分配一个存储单元,对零元素不分配空间。适合压缩存储的矩阵一般是值相同的元素或者零元素在矩阵中分布有一定规律的特殊矩阵和稀疏矩阵。常见的特殊矩阵有对称矩阵、三角矩阵和对角矩阵。
㈣ 急!急!完成对称矩阵的压缩存储。要求:1、给出对称矩阵需在一维数组中存储的个数;2、给定对称矩阵的任
发给你了,就是那个matrix.c。给加分~~给加分~~啦啦啦~~
㈤ 数据结构 设A为n阶对称矩阵,采用压缩存储存放于一维数组F[n(n+1)/2]中(从F[0]开始存放),请分别给出
你这个没定义清楚,一维数组和矩阵的映射有两种可能,一种是:
0
1 2
3 4 5
6 7 8 9
另一种是
0
1 4
2 5 7
3 6 8 9
问题也没那么复杂,如果上面的定义清楚了,其实就是给出行列,求矩阵元素在一维数组中的下标
以第一种为例:
int get(int F[], int row, int column) {
if (row > column) {
return row*(row-1)/2 + column;
} else {
return column*(column-1)/2 + row;
}
}
㈥ 数据结构,矩阵压缩存储问题
这个问题出在下标的问题上吧,第一个问题,明确说明第一个非零元素a(1,1)存于B[0]中,所以推导时没问题。
第二个问题并没有说第一个非零元素a(1,1)存于B[0]中,但大多教材推导是,是将第一个非零元素a(0,0)存于B[0]中,所以公式就不一样了,你的推导逻辑没问题。
㈦ 设对称矩阵A压缩存储在一维数组B中
首先由 a52能够得到的信息有:
针对特殊的矩阵压缩的方式是存储下三角,而且下三角计算一维数组的下标是:k=i(i+1)/2+j
由a11 存储在B[0]可以知道 从1开始存储,计算时需要减1
a36位于上三角中,对应的下三角的点是a63,在根据公式就能算出下标,注意一定要找到下三角的点
㈧ 假设一个15节的上三角矩阵a按行优先压缩存储在一维数组b中
k=10+9+8+7+1-1=34
㈨ 简述一下如何将一个上三角矩阵以列为主序压缩存储在一个一维数组
给一维数组分配矩阵数据总数+2的长度。
数组第一个和第二个存储矩阵的行数和列数
然后你将矩阵每列顺序的存储到该数组中
应该可以
列数判断何时数组结束
行数判断每列的界限
㈩ 数据结构 对称矩阵压缩存储题目,求详细解答。
我画了部分出来(图右面的数字9请忽略),a45位置是蓝色区域,由每一行红点位置开始,按照绿色箭头的方向开始数,第一行有10个,第二行9个,第三行8个,第四行7个,第五行来到蓝色区域有2个。因为a00有基地址,所以a45的地址应该为0(这个是a00存储地址)+(10+9+8+7+2-1)(注意要减1)X1=35所以答案应该是35才对吧。