软考在线  |  计算机技术与软件专业技术资格(水平)考试   |   [请选择科目]
[ 成为 VIP会员 ]        登录  |  注册      我的  购物车
 
科目切换  联系我们 
    
  |   [请选择科目]

VIP:有效提升20分!  真题  历年真题 (可免费开通)/  百科全书/ 机考模拟平台/  最难真题榜/  自测/  攻打黄金十二宫/  真题检索/  真题下载/  真题词库
知识   必会知识榜/  最难知识榜/  知识点查询/      文档   学习计划/  精华笔记/  试题文档     纸质图书   《百科全书》HOT!!/         /        首页/  2025年上半年专区/  手机版/ 
免费智能真题库 > 历年试卷 > 程序员 > 2021年上半年 程序员 上午试卷 综合知识
  第37题      
  知识点:   稀疏矩阵的三元组存储结构   矩阵   数组
  关键词:   一维数组   数组        章/节:   常用数据结构       

 
某n阶三对角矩阵A如下图所示,现需将矩阵的三对角元素按行存储在一维数组M中,设a1,1存储在M[0],那么aij ( 1≤i,j且aij位于三条对角线中)存储在( )。
 
 
  A.  M[i+2j -3]
 
  B.  M[i+2j]
 
  C.  M[2i+j-3]
 
  D.  M[2i+j]
 
 
 确定 并 查看答案解析     知识点讲解  我要标记      有奖找茬      上一题        下一题 
 

 
  第38题    2017年上半年  
   34%
在C程序中有一个二维数组A[7][8],每个数组元素用相邻的 8个字节存储,那么存储该数组需要的字节数为( )。
  第35题    2011年下半年  
   39%
设数组a[1..m,1..n] (m>1, n>2)中的元素以行为主序存放,每个元素占用1个存储单元,则最后一个数组元素a[m.n]相对于数组空..
  第56题    2024年上半年  
   0%
设数组a[1..10,1..8]中的元素按行存放,每个元素占用4个存储单元,已知第一个数组元素a[1,1]的地址为1004,那么a[5,6]的地址为(..
   知识点讲解    
   · 稀疏矩阵的三元组存储结构    · 矩阵    · 数组
 
       稀疏矩阵的三元组存储结构
        稀疏矩阵指矩阵中非零元素很少,且分布没有规律。设二维数组Am×nN个非零元素,N<<m*n,但它不是特殊矩阵(如对角矩阵)。对稀疏矩阵而言,只存储非零元素。用线性表存储稀疏矩阵的非零元素,除非零元素的值外,还应有一些辅助信息。顺序存储节省存储空间,但插入和删除不方便。稀疏矩阵的表示可用三元组[i,j,aij]来表示,其中,ijaij分别表示行列位置和值。由此可见,稀疏矩阵可由表示非零元的三元组和其行列数唯一确定。节点中除元素值外,还有元素所在行、列信息。节点结构如下:
        
        对如下图所示的稀疏矩阵,其三元组表示为(1, 2, 12),(1, 3, 9),(3, 1, -3),(3, 6, 14),(4, 3, 24),(5, 2, 18),(6, 1, 15),(6, 3, -7)。
        
        稀疏矩阵
        三元组的C语言描述如下:
        
        可利用三元组表实现矩阵的运算(以行序为主序),如矩阵的转置和矩阵的相乘等。
        对于矩阵am×n转置为bn×m,使a[i, j]=b[j, i],其中,1≤in, 1≤jm,其实现步骤如下。
        (1)将矩阵的行、列数互换。
        (2)将每个三元组中的ij互换。
        (3)重排三元组之间的次序。
        按a.data中三元组的次序进行转置,将转置后的三元组置入b中恰当的位置,如能预先确定M中每一列的第一个非零元在b.data中的相应位置,则转置时可直接放入b.data恰当的位置。先求每一列非零元的个数,设num、cpot两个向量,num[col]表示M中第col列非零元个数,cpot[col]的初值表示M中第col列第一个非零元在b.data中的位置。
        cpot函数的定义如下:
        
        其实现算法如下:
        
 
       矩阵
        矩阵是很多科学与工程计算问题中研究的数学对象。在数据结构中主要讨论如何在尽可能节省存储空间的情况下,使矩阵的各种运算能高效地进行。
        在一些矩阵中,存在很多值相同的元素或者是零元素。为了节省存储空间,可以对这类矩阵进行压缩存储。压缩存储的含义是为多个值相同的元素只分配一个存储单元,对零元不分配存储单元。
               特殊矩阵
               常见的特殊矩阵有对称矩阵、三角矩阵和对角矩阵等。对于特殊矩阵,由于其非零元的分布都有一定的规律,所以可将其压缩存储在一维数组中,并建立起每个非零元在矩阵中的位置与其在一维数组中的位置之间的对应关系。
               若矩阵An×n中的元素有aij=aji(1≤ijn)的特点,则称之为对称矩阵。
               若为对称矩阵中的每一对元素分配一个存储单元,那么就可将n2个元素压缩存储到能存放nn+1)/2个元素的存储空间中。不失一般性,以行为主序存储下三角(包括对角线)中的元素。假设以一维数组Bnn+1)/2]作为n阶对称矩阵A中元素的存储空间,则Bk](0≤k<nn+1)/2)与矩阵元素aijaji)之间存在着一一对应的关系。
               
               对角矩阵是指矩阵中的非零元素都集中在以主对角线为中心的带状区域中,即除了主对角线上和直接在对角线上、下方若干条对角线上的元素外,其余的矩阵元素都为零。一个n阶的三对角矩阵如下图所示。
               
               三对角矩阵示意图
               若以行为主序将n阶三对角矩阵An×n的非零元素存储在一维数组Bk](0≤k<3n-2)中,则元素位置之间的对应关系为:
               k=3×(i-1)-1+j-i+1=2i+j-3(1≤ijn
               其他特殊矩阵可作类似的推导和计算,这里不再一一说明。
               稀疏矩阵
               在一个矩阵中,若非零元素的个数远远少于零元素的个数,且非零元素的分布没有规律,则称之为稀疏矩阵。
               对于稀疏矩阵,存储非零元素时必须同时存储其位置(即行号和列号),所以三元组(ijaij)可唯一确定矩阵中的一个元素。由此,一个稀疏矩阵可由表示非零元素的三元组及其行、列数唯一确定。
               一个6行7列的稀疏矩阵如下图所示,其三元组表为(1,2,12),(1,3,9),(3,1,-3),(3,6,14),(4,3,24),(5,2,18),(6,1,15),(6,4,-7))。
               
               稀疏矩阵示意图
               稀疏矩阵的三元组表构成一个线性表,其顺序存储结构称为三元组顺序表,其链式存储结构称为十字链表。
 
       数组
               数组的定义及基本运算
               一维数组是长度固定的线性表,数组中的每个数据元素类型相同。n维数组是定长线性表在维数上的扩张,即线性表中的元素又是一个线性表。
               设有n维数组Ab1b2,…,bn],其每一维的下界都为1,bi是第i维的上界。从数据结构的逻辑关系角度来看,A中的每个元素Aj1j2,…,jn](1≤jibi)都被n个关系所约束。在每个关系中,除第一个和最后一个元素外,其余元素都只有一个直接后继和一个直接前驱。因此就单个关系而言,这n个关系仍是线性的。
               以下面的二维数组Am][n]为例,可以把它看成是一个定长的线性表,它的每个元素也是一个定长线性表。
               
               可将A看作一个行向量形式的线性表:
               Am*n=[[a11a12a1n][a21a22a2n]…[am1am2amn]]
               也可将A看作列向量形式的线性表:
               Am*n=[[a11a21am1][a12a22am2]…[a1na2namn]]
               数组结构的特点如下:
               (1)数据元素数目固定。一旦定义了一个数组结构,就不再有元素的增减变化。
               (2)数据元素具有相同的类型。
               (3)数据元素的下标关系具有上下界的约束且下标有序。
               在数组中通常做下面两种操作:
               (1)取值操作。给定一组下标,读其对应的数据元素。
               (2)赋值操作。给定一组下标,存储或修改与其相对应的数据元素。
               几乎所有的程序设计语言都提供了数组类型。实际上,在语言中把数组看成是具有共同名字的同一类型多个变量的集合。需要注意的是,不能对数组进行整体的运算,只能对单个数组元素进行运算。
               数组的顺序存储
               由于数组一般不作插入和删除运算,也就是说,一旦定义了数组,则结构中的数据元素个数和元素之间的关系就不再发生变动,因此数组适合于采用顺序存储结构。
               对于数组,一旦确定了它的维数和各维的长度,便可为它分配存储空间。反之,只要给出一组下标便可求得相应数组元素的存储位置,也就是说,在数据的顺序存储结构中,数据元素的位置是其下标的线性函数。
               二维数组的存储结构可分为以行为主序(按行存储)和以列为主序(按列存储)两种方法,如下图所示。
               
               二维数组的两种存储方式
               设每个数据元素占用L个单元,mn为数组的行数和列数,那么以行为主序优先存储的地址计算公式为:
               Loc(aij)=Loc(a11)+((i-1)×n+(j-1))×L
               同理,以列为主序优先存储的地址计算公式为:
               Loc(aij)=Loc(a11)+((j-l)×m+(i-1))×L
   题号导航      2021年上半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第37题    在手机中做本题
    在线人数   共计 9411人 在线 
    yanchunyu1..     xk@cimr.co..     jgypcb@163..     likaigreat..     lixiaoxiah..     pujerry@12..
    zhangxiao3..     543548433@..     605061364@..     jetaimeqin..     sunlin888@..     dengyou198..
    yaofan7097..     wyunliang7..     188680391@..     jianjiangw..     ievtao@soh..     dgrly@163...
    zhongqiang..     c.xue@biol..     mengxc042@..     408718571@..     ygzgz74309..     QL02345@16..
    xiaoxiaoyu..     wangwei409..     dgrly@163...     zjyhsm@163..     jmsiti163@..     yalixiaowe..
    chenwangen..     zsq_mail01..     kingdomtow..     wuyi573897..     liuteng110..     liyulongme..
    zhang@_741..     liuch_1126..     txliang@ts..     hezeliukan..     562550455@..     wuyongou@q..

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。



京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2025 All Rights Reserved 软考在线版权所有