矩阵在游戏中的作用,矩阵公与平者,即国之基址也意思是啥是什么意思

> 问题详情
设有一个8阶的对称矩阵A,采用压缩存储方式,以行序为主序存储,每个元素占用一个存储单元,基址为10
悬赏:0&答案豆
发布时间:
设有一个8阶的对称矩阵A,采用压缩存储方式,以行序为主序存储,每个元素占用一个存储单元,基址为100,则A63的地址为_________。A.118B.124C.151D.160请帮忙给出正确答案和分析,谢谢!
您可能感兴趣的试题
1常对数组进行的两种基本操作是______。A.建立与删除B.索引与修改C.查找与修改D.查找请帮忙给出正确答案和分析,谢谢!2编写算法,将自然数1~n2按“蛇形”填入,n×n矩阵中。例(1~42)如下图所示。请帮忙给出正确答案和分析,谢谢!3已知稀疏矩阵请给出矩阵A的三元组表示。请帮忙给出正确答案和分析,谢谢!4用k表i、j的下标变换公式。请帮忙给出正确答案和分析,谢谢!
我有更好的答案
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
每天只需0.4元
选择支付方式
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
恭喜你被选中为
扫一扫-免费查看答案!
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
提示:请截图保存您的账号信息,以方便日后登录使用。
常用邮箱:
用于找回密码
确认密码:Chapter05_数组和广义表_数据结构(C语言版)_严蔚敏_配套ppt课件_图文_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Chapter05_数组和广义表_数据结构(C语言版)_严蔚敏_配套ppt课件
&&数据结构(C语言版)_严蔚敏_配套ppt课件,全套,全集
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩86页未读,
定制HR最喜欢的简历
你可能喜欢查看: 1613|回复: 5
终结者2的 视窗基址 矩阵基址 遍历基址 谁会搜 有偿!
阅读权限20
在线时间158 小时
积分主题听众
已帮网友解决0 个问题
如果您下载的软件是收费的"请千万不要付款",那绝对是骗子,请立即联系本站举报,若您执意要付款被骗后本站概不负责。</
QQ&&懂得来& &骗子直接绕道
联系我时,请说是在 挂海论坛 上看到的,谢谢!
上一篇:下一篇:
阅读权限30
在线时间46 小时
积分主题听众
已帮网友解决0 个问题
有基址卖,要不?搜法不卖!
在线时间42 小时
有基址卖,要不?搜法不卖!
老哥你QQ多少我要一个
阅读权限30
在线时间46 小时
积分主题听众
已帮网友解决0 个问题
老哥你QQ多少我要一个
阅读权限40
在线时间147 小时
积分主题听众
已帮网友解决0 个问题
我会,我有特征码
阅读权限20
在线时间36 小时
积分主题听众
已帮网友解决0 个问题
我会,我有特征码
你的QQ是多少
Powered by Discuz! X3.2
Comsenz Inc.数组的定义
数组的定义
数组是下标index 和值value 组成的序对的集合。
在数组中,每个有定义的下标都与一个值对应,这个值称做数组元素。
每个序对形如: (index,value)
数组的顺序表示和实现
由于计算机的内存结构是一维的,因此用一维内存来表示多维数组,就必须按某种次序将数组元素排成一列序列,然后将这个线性序列存放在存储器中。
一般都是采用顺序存储的方法来表示数组
一维数组的顺序表示
设第一个数组元素a[0]的存储地址是loc(a[0]),若已知每个数组元素占k个存储单元,则下标为i的数组元素a[i]的存储地址loc(a[i])为
loc(a[i])=loc(a[0])+i*k
i=0,1,2,…,n-1。
二维数组的顺序表示
二维数组a[m][n]映射到一维的存储空间时有两种顺序:行优先和列优先。
大多数语言如PASCAL、BASIC、C、C++等都是按行优先顺序存储的,FORTRAN是按列优先顺序存储的。
矩阵的压缩存储
矩阵的存储——二维数组
考虑:若矩阵阶数很高,且有许多值相同的元素或零元素,怎么提高存储效率?
特殊矩阵——值相同的元素或者零元素在矩阵中的分布有一定规律
稀疏矩阵——矩阵中有大量零元素,非零元素比较少。
压缩存储:为多个相同的非零元素只分配一个存储空间;对零元素不分配空间。
对称矩阵的压缩存储
若i≧j,则aij 在下三角矩阵中。 aij 之前的i-1行(从第1行到第i-1行)一共有1+2+…+i-1=i(i-1)/2个元素,在第i行上, aij 之前恰有j-1个元素(即ai0,ai1,ai2,…,aij-1),因此有:
k=i*(i-1)/2+j-1
若i&j,则aij 是在上三角矩阵中。因为aij=aji,所以只要交换上述对应关系式中的i和j即可得到:
k=j*(j-1)/2+i-1
根据上述的下标对应关系,对于矩阵中的任意元素aij,均可在一维数组sa中唯一确定其位置k;反之,对所有k=0,1, …, n(n+1)/2-1,都能确定sa[k]中的元素在矩阵中的位置(i,j)。
三角矩阵的压缩存储
三角矩阵中的重复元素c可共享一个存储空间,其余的元素正好有n(n+1)/2个,因此,三角矩阵可压缩存储到一维数组sa[n(n+1)/2+1]中,其中c存放在数组的第1个位置(亦可放在最后一个位置)。
上三角矩阵元素aij保存在数组sa中时,下标值k与(i,j)之间的对应关系是?
下三角矩阵元素aij保存在数组sa中时,下标值k与(i,j)之间的对应关系是?
稀疏矩阵的存储
解决方法:在存储非零元素的同时,同时记下它所在的行和列的位置(i, j)。
由于三元组(i, j, aij)唯一确定了矩阵A的一个非零元。因此,稀疏矩阵可由表示非零元的三元组及其行列数唯一确定。
例如,下列三元组表
( (1,2,12), (1,3,9), (3,1,-3), (3,8,4), (4,3,24), (4,6,2), (5,2,18),
(6,7,-7), (7,4,-6) ) 和行列信息(7,8,9)便可描述如图5.6所示的稀疏矩阵
注:行列信息(7,8,9)中,7:行;8:列;9:非零元个数
三元组顺序表
以顺序存储结构来表示三元组表,则得到稀疏矩阵的一种压缩存储方法——三元顺序表。
⑴ 三元组结点定义
#define MAX_SIZE 1000
typedef int
typedef struct
elemtype value;
三元组顺序表定义
typedef struct
data[MAX_SIZE] ;
矩阵的转置
设稀疏矩阵A是按行优先顺序压缩存储在三元组表a.data中,若仅仅是简单地交换a.data中i和j的内容,得到三元组表b.data,b.data将是一个按列优先顺序存储的稀疏矩阵B,要得到按行优先顺序存储的b.data,就必须重新排列三元组表b.data中元素的顺序。
由于A的列是B的行,因此,按a.data的列序转置,所得到的转置矩阵B的三元组表b.data必定是按行优先存放的。
转置矩阵的算法
按方法一求转置矩阵的算法如下:
void TransMatrix(TMatrix a , TMatrix * b)
int i , j ,
b-&rn=a. b-&cn=a. b-&tn=a.
置三元组表b-&data的行、列数和非0元素个数 */
(b-&tn==0)
printf(“ The Matrix A=0\n” );
j=0; //b中三元组 数组下标
(col=1; col&=a. col++)
每次循环扫描 a的第col 列非零元,得到b的第col行非零元
(i=0 ;i&a. i++)
循环次数是非0元素个数
(a.data[i].col==col)
b-& data[j].row=a.data[i].
b-& data[j].col=a.data[i].
b-& data[j].value=a.data[i].
快速转置算法
快速转置算法如下
FastTransMatrix(TMatrix a, TMatrix b)
int p , q , col , k
int num[N] , copt[N]
printf(“ The Matrix A=0\n” )
for (col=1
++num[ a.data[k].col]
for (cpot[1]=0, col=2
cpot [col]=cpot[col-1]+num[col-1]
col = a.data[p].col
q=cpot[col]
b.data[q].row=a.data[p].col
b.data[q].col=a.data[p].row
b.data[q].value=a.data[p].value
++cpot[col]
十字链表(链式存储)
对于稀疏矩阵,当非0元素的个数和位置在操作过程中变化较大时,采用链式存储结构表示比三元组的线性表更方便。
矩阵中非0元素的结点所含的域有:行、列、值、行指针(指向同一行的下一个非0元)、列指针(指向同一列的下一个非0元)。其次,十字交叉链表还有一个头结点
稀疏矩阵中同一行的非0元素的由right指针域 链接成一个行链表, 由down指针域链接成一个列链表。
每个非0元素既是某个行链表中的一个结点,同时又是某个列链表中的一个结点,所有的非0元素构成一个十字交叉的链表,称为十字链表。
此外,用两个一维数组rhead和chead分别存储行链表的头指针和列链表的头指针。
结点的描述如下:
typedef struct
} OLNode, *OL
typedef struct
} CrossList
广义表是线性表的推广和扩充,在人工智能领域中应用十分广泛。
第2章中的线性表定义为n(n≧0 )个元素a1, a2 ,…, an的有穷序列,该序列中的所有元素具有相同的数据类型且只能是原子项(Atom)。所谓原子项可以是一个数或一个结构,在结构上不可再分。若放松对元素的这种限制,容许它们具有其自身结构,就产生了广义表的概念。
广义表(Lists,又称为列表 ):是由n(n ≧0)个元素组成的有穷序列: LS=(a1,a2,…,an) ,其中ai或者是原子项,或者是一个广义表。LS是广义表的名字,n为它的长度。若ai是广义表,则称为LS的子表。
习惯上:原子项用小写字母,子表用大写字母。
若广义表LS非空时:
◆ a1(表中第一个元素)称为表头;
◆ 其余元素组成的子表称为表尾;(a2,a3,…,an)
◆ 广义表中所包含的元素(包括原子和子表)的个数称为表的长 度。
◆ 广义表中括号的最大层数称为表深 (度)
广义表的元素可以是原子项,也可以是子表,子表的元素又可以是子表, …。即广义表是一个多层次的结构。表5-2中的广义表D的图形表示如图5-12所示。
广义表可以被其它广义表所共享,也可以共享其它广义表。广义表共享其它广义表时不必列出子表的值,而是通过表名引用。如:D=(A,B,C)
广义表本身可以是一个递归表。如:E=(a,E)
根据对表头、表尾的定义,任何一个非空广义表的表头可以是原子,也可以是子表, 而表尾必定是广义表。
广义表的存储结构
由于广义表中的数据元素具有不同的结构,通常用链式存储结构表示,每个数据元素用一个结点表示。因此,广义表中就有两类结点:
◆ 一类是表结点,用来表示广义表项,由标志域,表头指针域,表尾指针域组成;
◆ 另一类是原子结点,用来表示原子项,由标志域,原子的值域组成。如图5-13所示。
只要广义表非空,都是由表头和表尾组成。即一个确定的表头和表尾就唯一确定一个广义表。
相应的数据结构定义如下:
typedef struct GLNode
struct GLNode
稀疏矩阵的三元组表与十字链表存储
三元组表和十字链表存储稀疏矩阵,并进行矩阵的加、乘法、转置等操作
三元组表:存储稀疏矩阵的非零元素,以及该元素所在的行、列信息,极大的节省了空间(如相比于一般的二维数组的存储),而且三元组表的某些算...
数组的基础知识
数组的定义:
数组是由一组类型相同的数据元素构成的有序集合,每个数据元素称为一个数组元素(简称为元素),每个元素受n(n≥1)个线性关系的约束,每个元素在n个线性关系中的序号i1、i...
【数据结构】矩阵!!
* 稀疏矩阵的存储和还原
在数据结构里面矩阵的存贮方式并不是全部是吧数据一个一个存储起来,但是这是针对一些特殊的矩阵。* 举个栗子:
比如这个矩阵在内存里面如果是把全部的数据全部存储在内存里面...
数据结构之矩阵实现
数据结构的矩阵实现
数组与矩阵
数组是我们比较常接触的一种数据结构了,就我们所了解的,数组从一维到多维不等,由数组演变出来的另一概念,被称之为矩阵,但是其实质还是一种有序的序列。...
数据结构--数组和广义表--数组的顺序存储表示和实现
数组类似于串的定长顺序存储,数组中所有的数据元素都必须是同一类型,每个数据元素都对应唯一的一组下标(j1,j2...jn),每个下标的取值范围是 0...
数据结构小结(五) 数组与广义表
第五章 数组 与 广义表 与 散列表
这章主要说说多维数组,广义表,和散列表吧。学校并没有提及到散列表,但是散列表这个东西超重要的,拿出来说说好了,知道它是什么,怎么用,在哪里用就好了。
数据结构习题之多维数组和广义表
多维数组和广义表
一、基本要求、重点、难点
本章目的是介绍多维数组的逻辑结构特征及其存储方式,特殊矩阵和稀疏矩阵的压缩存储方法。本章重点是熟悉多维数组的存储方式、矩阵的压缩存储方式...
数据结构之广义表(头尾链表存储)基本操作
typedef char AtomT
typedef enum{ ATOM, LIST }ElemT
typedef str...
没有更多推荐了,*base:数组元素基址,以二维数组A为例,将数组(按行或者按列)拉成一个向量L所组成的线性结构的首地址.*bounds:数组维界地址,指向一个一维数组B,它存放了数组A各维度元素的数目.假设数组A是(3,4,5)大小的, 则数组B=[3,4,5]*constants:数组映像函数常量基址,指向一个数组C, 它存放了"数组A各个维度上的数字加一时, 元素在线性结构L上所移动的距离".举个栗子吧!首先二维数组A(3,4):bounds[] = [3,4]; constants[] = [4,1]:代表第0维上的数字每加一, 元素在线性结构L中的位置就增加了4; 而第一维上的数字每加一, 元素位置也是加一若要求坐标为(2,2)的元素地址addr.(处在第三行,第三列的位置),则addr = 数组A首元素地址 + 2*constants[0] + 2*constants[1] = 数组A首元素地址 +
2*4+2 = 数组A首元素地址 + 10再看一个三维数组A(3,4,5):bounds[] = {3,4,5}constants[] = {4*5, 5, 1}
可以看出:constants[2] = 1;
constants[1] = constants[2]*bounds[2];
constants[0] = constants[1]*bounds[1]即:constants[i] = constans[i+1]
bounds[i+1]对于一个元素, 其第0维每增加一, 在线性结构L中的位置就增加了4*5 = 20个, 以此类推.则元素(1,2,3)的元素位置为:1*constants[0] + 2*constants[1]
+ 3*constants[2] = 1*20 + 2*5 +3*1 = 33
第五章 数组的数组的顺序存储表示和实现
代码能够实现但是会出现非法访问地址。
// Array.cpp : Defines the entry point for the console application.
//稀疏矩阵三元组顺序...
数据结构之数组Array
Status InitArray(int dimm,...)//若维数dim和随后的各维长度合法,则构造相应的数组A,并返回OK
Status DestroyArray...
【转载】数组的维界基址和映像函数常量基址理解
原文链接:https://blog.csdn.net/panglinzhuo/article/details/*base:数组元素基址,以二维数组A为例,将数组(按行或者按列)拉成一个...
数组是大家很熟悉的一种数据类型,而且在我们的程序设计中也应用非常广泛。这里以抽象数据类型的形式讨论数组的定义和实现。一、数组的定义假设n维数组中含有第i维的长度为b(i),则数组的总长度为b(0) *...
#include /* malloc()等 */
#include /* EOF(=^Z或F6),NULL */
#include /* atoi() */
以下为展示顺序数组的示例:
1.用c语言实现的版本
#include /* EOF(=^Z或F6),NULL */
#include /* floor(),ceil(),abs() */
Created on:
Author:liusheng
* 头文件stdarg.h中几个宏作用的讲解
n维数组是线性表的扩展:
当n=1时,n维数组退化成顺序表
当n&1时,n维数组可看成表中数据元素是n-1维数组的线性表(列向量,行向量)
二维数组的两种理解方式...
数组的4种形式输出
数组内存的首地址和数组第0个元素的地址什么区别?
它们的地址值是相等的;
第0个元素的地址如果是p,则p+1就是第1个元素的地址;
数组的首地址如果是p,则p+1就跳过这个数数组而指向这个数组最...
5.1数组的定义&5.2数组的顺序表示和实现
5.1数组的定义&5.2数组的顺序表示和实现
没有更多推荐了,}

我要回帖

更多关于 矩阵基址如何使用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信