“数组、矩阵与广义表”学习提纲
文章目录
- 前言
- 数组
- 多维数组的存储方式
- 矩阵
- 常见的特殊矩阵
- 对称矩阵的压缩存储计算
- 三角矩阵的压缩存储计算
- 三对角矩阵的压缩存储计算
- 稀疏矩阵的压缩存储方式
- 广义表
- 广义表的属性
- 广义表的存储方式
- 总结
- 参考资料
- 作者的话
前言
“数组、矩阵与广义表”学习提纲。
数组
多维数组的存储方式
- 行优先
- 列优先
矩阵
常见的特殊矩阵
矩阵分区:上三角区,主对角线,下三角区
- 对称矩阵
- 三角矩阵:上三角矩阵,下三角矩阵
- 对角矩阵/带状矩阵:三对角矩阵
对称矩阵的压缩存储计算
数组表示:a[n][n]。其中a为数组名称,n为行和列数
元素表示:a[i][j]。其中i为行下标,j为列下标
存储元素数量:(1+n)×n÷2
存储下标(从0开始;行下标和列下标从1开始,行优先,存下三角区):
- i×(i-1)÷2+j-1,i>=j(下三角区和主对角线元素)
- j×(j-1)÷2+i-1,i<j(上三角区元素)
注意:
- 关注:行下标和列下标从0或1开始,存储下标从0或1开始,依据行或列优先存储。对称矩阵还要多关注存储在上或下三角区
- 行下标和列下标从0开始相比从1开始需要重新推导公式
- 存储下标从1开始相比从0开始需要多+1
- 选择题可以使用特殊值代入法判断
三角矩阵的压缩存储计算
数组表示:a[n][n]。其中a为数组名称,n为行和列数
元素表示:a[i][j]。其中i为行下标,j为列下标
存储元素数量:(1+n)×n÷2+1
下三角矩阵的存储下标(从0开始;行下标和列下标从1开始,行优先):
- i×(i-1)÷2+j-1,i>=j(下三角区和主对角线元素)
- (1+n)×n÷2,i<j(上三角区元素)
上三角矩阵的存储下标(从0开始;行下标和列下标从1开始,行优先):
- (2×n-i+2)×(i-1)÷2+(j-i),i<=j(上三角区和主对角线元素)
- (1+n)×n÷2,i>j(下三角区元素)
下三角矩阵的存储下标(从0开始;行下标和列下标从1开始,列优先):
- (2×n-j+2)×(j-1)÷2+(i-j),i>=j(下三角区和主对角线元素)
- (1+n)×n÷2,i<j(上三角区元素)
上三角矩阵的存储下标(从0开始;行下标和列下标从1开始,列优先):
- j×(j-1)÷2+i-1,i<=j(上三角区和主对角线元素)
- (1+n)×n÷2,i>j(下三角区元素)
三对角矩阵的压缩存储计算
数组表示:a[n][n]。其中a为数组名称,n为行和列数
元素表示:a[i][j]。其中i为行下标,j为列下标
存储下标(从0开始;行下标和列下标从1开始):2×i+j-3
由存储下标得行下标(从1开始)和列下标(从1开始)(假设存储下标为k):
- i=[(k+1)÷3+1]下取整
- j=k-2i+3
稀疏矩阵的压缩存储方式
顺序存储:
- 三元组表示法:结构体或二维数组,行数为非零元素数量,列数为3:值,行下标,列下标
- 伪地址表示法:二维数组,行数为非零元素数量,列数为2:值,伪地址/相对位置
伪地址表示法的相关存储计算:
- 数组表示:a[m][n]。其中a为数组名称,m为行数,n为列数
- 元素表示:a[i][j]。其中i为行下标,j为列下标
- 伪地址/相对位置(从0开始,行优先):(i-1)×n+j
链式存储:
- 邻接表表示法:一行为一个单链表,头结点有行下标和指针,其他结点有值、列下标和指针
- 十字链表表示法:一行为一个单链表,一列为一个单链表,单链表纵横链接。结点有5个分量:值,行下标,列下标,指向下方结点的指针,指向右方结点的指针
广义表
广义表的属性
- 长度:最上层元素的数量
- 深度:展开子表后,括号的最大层数
- 表头:表非空时,第一个元素
- 表尾:表非空时,除第一个元素的其他元素
广义表的存储方式
- 头尾链表(类似无头结点的单链表):原子结点:标记,值;广义表结点:标记,头指针,尾指针
- 扩展线性表链表(类似有头结点的单链表):原子结点:标记,值,尾指针;广义表结点:标记,头指针,尾指针
总结
“数组、矩阵与广义表”学习提纲。
参考资料
- 《2023版数据结构高分笔记》主编:率辉
- 《2023年计算机组成原理考研复习指导》组编:王道论坛
作者的话
- 感谢参考资料的作者/博主
- 作者:夜悊
- 版权所有,转载请注明出处,谢谢~
- 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
- 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
- 文章在认识上有错误的地方, 敬请批评指正
- 望读者们都能有所收获
“数组、矩阵与广义表”学习提纲相关推荐
- 18版考研数据结构天勤课后习题代码-数组、矩阵与广义表【完】
#include <iostream> using namespace std; #define maxSize 101 /* //把非零元素移动到数组前端 天勤P122(二)1 voi ...
- 第五章 数组、矩阵与广义表
- 什么是广义表、广义表及定义详解
前面讲过,数组即可以存储不可再分的数据元素(如数字 5.字符 'a'),也可以继续存储数组(即 n 维数组). 但需要注意的是,以上两种数据存储形式绝不会出现在同一个数组中.例如,我们可以创建一个整形 ...
- C语言数据结构学习——数组和广义表
数组和广义表 数组 数组定义 特点 常见运算及声明方式 数组的顺序表示和实现 矩阵的压缩存储 概念 稀疏矩阵 对称矩阵 三角矩阵 广义表 数组 数组定义 数组(Array)是有序的元素序列.若将有限个 ...
- UESTC--ICODING数组与广义表-----矩阵加法
UESTC--ICODING数组与广义表-----矩阵加法 题目: 相关定义如下: 代码: 文章供学习交流参考 题目: 实现三元组表示的两个稀疏矩阵的加法. 相关定义如下: ElemType elem ...
- 数据结构(C)必会知识点+易错点:数组和广义表(n维数组地址计算公式,特殊矩阵对称矩阵的存储,广义表的表示方法)
一,n维数组地址计算公式 ji表示n维数组中该元素在第i维中的坐标 ai表示n维数组中第i维的起始坐标 bi表示第i维度的长度 L表示一个元素所占的字节数 LOC(-)表示该坐标对应的存储中的地址(一 ...
- 数组、特殊矩阵、稀疏矩阵、广义表
文章目录 一.数组 基本知识 存储方式及地址计算 一维数组 地址计算 二维数组 地址计算 例题 例一 例二 二.特殊矩阵 对称矩阵 地址计算 三.稀疏矩阵 三元组 三元组顺序表 稀疏矩阵转置算法 算法 ...
- 数组和广义表 - [数据结构]
2005-09-07 数组和广义表 - [数据结构] 第五章 数组和广义表 --非线性数据结构 5.1 数组的定义和运算 ☆二维数组的逻辑结构形式定义为: 2_Array=( D, R ) 其中 D= ...
- 6.串、数组、广义表
思考 一.什么是串.数组.广义表?(What) 1.串的定义 1.串: 2.子串.真子串: 3.字符位置.子串位置.空格串 4.串相等 2.案例引入 3.串的类型定义.存储结构及其运算 1.类型定义 ...
最新文章
- Python isinstance() 函数
- iOS下JS与OC互相调用(五)--UIWebView + WebViewJavascriptBridge
- 音频数据建模全流程代码示例:通过讲话人的声音进行年龄预测
- 列注释_简单5步了解相关矩阵的注释热图
- AJAX入门——工作原理
- 微软MVC对架构的一点思考
- 对 比 学 习 小 综 述
- docker用gpu的参数_Docker化部署(GPU)
- Linux下定时切割nginx日志并删除指定天数前的日志记录
- Android视频编码的坑
- 习题 3.10 有一函数:写一程序,输入x,输出y值。
- 欧奈尔RPS曲线的编制方法及常见问题解答
- Selenium模拟浏览器获取爬取QQ音乐歌词、评论等。
- dubbo源码分析-dubbo-serialization
- 解决VMware中的Windows Server 2012 R2无法成功安装Hyper-V的问题
- 你需要了解的JS框架 用途:构建数
- 无处不在的内存泄漏-苹果BUG?
- 润物无声因挚爱,育人无痕待花开
- 台式计算机win如何联网,Win10台式机怎么连接无线网(wifi)?
- vue中单选框设置默认选中值