数组与广义表的压缩存储练习解析
需积分: 5 200 浏览量
更新于2024-08-03
收藏 46KB DOC 举报
"本资源为第5章关于数组和广义表的练习题,涵盖了特殊矩阵、稀疏矩阵、二维数组存储方式、对称矩阵压缩存储、数组元素位置计算以及广义表操作等内容。"
在计算机科学中,数组和广义表是两种重要的数据结构,它们在处理大量数据时扮演着关键角色。以下是对这些练习题中涉及知识点的详细解释:
1. **特殊矩阵和稀疏矩阵**:
- 特殊矩阵如对角矩阵、单位矩阵等,其中大部分元素为0,少数元素为非零。这些矩阵通常可以高效地存储和处理。
- **稀疏矩阵**是指非零元素数量远小于总元素数量的矩阵。为了节省存储空间,稀疏矩阵通常采用压缩存储,如三元组表或压缩链接列表。在压缩存储后,由于元素的存储位置不再与原始坐标对应,因此失去了随机存取的功能。
2. **二维数组存储**:
- 二维数组的存储方式有两种:按行存储和按列存储。在按行存储时,元素M[3][5]的起始地址与按列存储时的某个元素相同。由于题目没有给出具体的列存储顺序,答案可能是根据元素位置计算得出的。题目中提到的选项可能需要根据具体的存储方式来确定。
3. **对称矩阵的压缩存储**:
- 对于对称矩阵,只需要存储上三角或下三角部分即可,因为其余部分是对称的。假设矩阵的下三角元素按行存储,a11为第一个元素,存储地址为1,那么a85的位置可以通过计算得出。对于10阶矩阵,a85在下三角的第8行第5列,其位置可以通过公式计算:`(i-1)*i/2 + j`,这里的i和j分别是行和列的索引。
4. **对称矩阵下三角元素的位置计算**:
- 对于下三角元素aij (i < j),在数组B中的位置k可以通过公式 `j*(j-1)/2 + i` 计算得出。这是因为元素是按照列优先的顺序存储的。
5. **对称矩阵上方元素的存储位置**:
- 当矩阵A的对角线上方的元素以列为主的次序存储时,元素aij (1 ≤ i, j ≤ n, 且 i ≤ j) 的位置可以用公式 `j(j-l)/2 + i - 1` 来计算。
6. **二维数组到一维数组的映射**:
- 二维数组A[i, j]转换为一维数组B中的下标通常是 `(i-1)*n + j`,这是行优先的存储方式。
7. **稀疏矩阵的三元组表示**:
- 一个100*90的稀疏矩阵,如果有10个非0元素,用三元组表示时,每个三元组需要存储行索引、列索引和值,一共3个整数。每个整数占2字节,所以10个元素需要10 * 3 * 2 = 60字节,加上可能存在的结束标记,总字节数可能是66字节。
8. **广义表的操作**:
- 广义表是一种可以包含其他表的数据结构,类似于链表的递归形式。要从广义表L中取出原子项t,需要先取L的第二个元素(也就是tail(L)),然后取这个元素的第一个元素(即head(tail(L))),最后再取这个元素的第一个元素(head(head(tail(L))))。
这些练习题涵盖了数组和广义表的基本概念和操作,对于理解这两种数据结构及其在存储和运算中的优化方法至关重要。在实际编程中,理解和掌握这些知识可以帮助我们更有效地处理数据,提高算法的效率。
2021-09-20 上传
2021-11-22 上传
2021-06-27 上传
2021-12-04 上传
2021-10-07 上传
2022-07-14 上传
2021-03-10 上传
2021-09-28 上传
2021-12-05 上传
invincible_Tang
- 粉丝: 4659
- 资源: 131
最新资源
- JHU荣誉单变量微积分课程教案介绍
- Naruto爱好者必备CLI测试应用
- Android应用显示Ignaz-Taschner-Gymnasium取消课程概览
- ASP学生信息档案管理系统毕业设计及完整源码
- Java商城源码解析:酒店管理系统快速开发指南
- 构建可解析文本框:.NET 3.5中实现文本解析与验证
- Java语言打造任天堂红白机模拟器—nes4j解析
- 基于Hadoop和Hive的网络流量分析工具介绍
- Unity实现帝国象棋:从游戏到复刻
- WordPress文档嵌入插件:无需浏览器插件即可上传和显示文档
- Android开源项目精选:优秀项目篇
- 黑色设计商务酷站模板 - 网站构建新选择
- Rollup插件去除JS文件横幅:横扫许可证头
- AngularDart中Hammock服务的使用与REST API集成
- 开源AVR编程器:高效、低成本的微控制器编程解决方案
- Anya Keller 图片组合的开发部署记录