- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构答案 章 多维数组和广义表学习指导
第6章 多维数组和广义表
6.1 知识点分析
1.多维数组概念
多维数组是向量的推广,对于二维数组A m×n既可以看成m行向量组成的向量,也可以看成n行向量组成的向量。多维数组在计算机中有两种存储形式:按行优先顺序存储和按列优先顺序存储。
2.多维数组的存储
二维数组aij的地址为:LOC aij LOC a00 + i×n + j × d (0下标起始的语言)
三维数组aijk的地址为:LOC aijk LOC a000 + i×n×p+ j×p +k ×d (0下标起始的语言)
d为每个数据元素占有的字节数。
3.特殊矩阵
在矩阵中非零元素或零元素的分布有一定规律的矩阵称为特殊矩阵,如三角矩阵、对称矩阵、稀疏矩阵等。当矩阵的阶数很大时,用普通的二维数组存储这些特殊矩阵将会占用很多的存储单元。从节约存储空间的角度考虑,以下特殊矩阵的存储方法。
(1)对称矩阵对称矩阵是一种特殊矩阵,n阶方阵的元素满足性质:aij aji (0≤i , j≤n-1)。对称矩阵是关于主对角线的对称,因此只需存储上三角或下三角部分的数据即可。
(2)三角矩阵三角矩阵的特殊性是以主对角线划分矩阵。下三角矩阵,主对角线以上均为同一个常数;上三角矩阵,主对角线以下均为同一个常数,可以采用压缩存储。
(3)稀疏矩阵在m*n的矩阵中有t个非零元素,且t远小于m×n,这样的矩阵称稀疏矩阵。为了节约存储空间,稀疏矩阵中零元素无需存储,只需存储矩阵中的非零元素。稀疏矩阵常用的有:三元组表存储、带行指针的链表存储、十字链表存储等存储方法。
4. 广义表
广义表是n(n≥0)个数据元素的有序序列,广义表的元素可以是单元素,也可以是一个广义表。由于广义表的元素有两种形式,所以其结点的存储形式也有两种:
(1)表结点由标志域、表头指针域、表尾指针域组成。
(2)原子结点由标志域和值域组成。
5.广义表与线性表的区别和联系
线性表是具有相同类型的n个数据元素的有限序列,记为a1、a2、a3、……、an。广义表也是n个数据元素的有限序列,记为a1、a2、a3、……、an。线性表中的元素必须具有相同的类型,而广义表中的成员,既可以是单个元素(原子),也可以是一个广义表(子表)。当广义表中的每一个ai元素都是数据元素,且具有相同类型时,则它就是一个线性表,因此可以说广义表是线性表的一种推广,或者说线性表是广义表的一个特例。
6.2 典型习题分析
【例1】 设二维数组A5×6的每个元素占4个字节,存储器按字节编址。已知A的起始地址为2000,计算:
数组的大小?
A的终端结点a45的存储地址?
按行优先顺序存储时,a25的存储地址?
按列优先顺序存储时,a25的存储地址?
:
(1)数组的大小(即数组A共占多少字节):5×6×4 120B。
(2)一个结点aij的存储地址是该结点所占用的存储空间的第1个字节的地址(即起始地址),它等于:基地址+排在aij之前的结点个数×每个结点所占用的字节数。
a45的起始地址:LOC a45 2000+ 4×6+5 ×4 2116
(3)在按行优先顺序存储时,排在aij之前的结点的个数为:在前i行(即0~i-1行)上共有i×n个结点,在第i行上aij之前有j个结点(0~j-1列)。所以按行优先存储的地址计算公式为: LOC aij LOC a00 + i×n+j ×d
LOC a25 2000+ 2×6+5 ×4 2068
(4)在按列优先顺序存储时,排在aij之前的结点的个数为:在前j列(即0~j-1列)上共有j×m个结点,在第j列上aij之前有i个结点(0~i-1行)。所以按列优先存储的地址计算公式为: LOC aij LOC a00 + j×m+i ×d
LOC a25 2000+ 5×5+2 ×4 2108
【例2】 特殊矩阵和稀疏矩阵哪一种压缩存储后会失去随机存储功能?为什么?
: 对于像三角矩阵等特殊矩阵由于压缩存储时将其存储在一个线性数组向量中,矩阵元素aij的下标i,j与它在向量中的对应元素bk下标k有一对应关系,故不会失去随机存储功能。而像稀疏矩阵,其压缩存储的方式是将其非零元素存储在一个三元组中,以三元组数组a[k]形式存储,矩阵元素aij下标i,j与数组中对应元素a[k]行下标k无对应关系,故失去随机存储功能。
【例3】 矩阵转置矩阵
对于一个m×n的矩阵Amn,其转置矩阵是一个n×m的矩阵Bnm,且B[i][j] A[j][i],
0≤i n,0≤i m。其函数如下:
void trs A,B
maxix A,B; int i,j; for i 0;i m;i++ for j 0;j n;j++ B[j][i] A[i][j]; 【例4】乘
设两个矩阵相乘:C A×B,
其中
文档评论(0)