| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 程序员“修炼成神”的必经之路——数据结构(第4章 多维数组和广义表) -> 正文阅读 |
|
[数据结构与算法]程序员“修炼成神”的必经之路——数据结构(第4章 多维数组和广义表) |
目录 前言
一、多维数组1.多维数组定义及顺序存储1.1 多维数组的定义
????????多维数组是一种复杂的数据结构。以二维数组为例,数组元素之间的关系除了边界元素外,每个元素都恰好有两个直接前趋和两个直接后继:行向量上的直接前趋是和,列向量上的直接前趋是和直接后继。并且二维数组也只有一个开始结点,它没有前趋;仅有一个终端结点,它没有后继。此外,边界上的结点(开始结点和终端结点除外)只有一个直接前趋或者只有一个直接后继。 1.2 数组的顺序存储(1)按行优先顺序存储,即将数组元素按行向量排列,第i+1个行向量紧接在第i个行向量后面。A的m x n个元素按行优先顺序存储的线性序列为: 2.矩阵的压缩存储2.1 特殊矩阵????????所谓特殊矩阵,指的是相同值的元素或者零元素在矩阵中的分布有一定规律的矩阵。 2.1.1 对称矩阵 ????????若n阶方阵A中的元素满足下述性质: 则称A为n阶的对称矩阵。对称矩阵中的元素是关于主对角线对称的,所以只需要存储矩阵上三角或下三角的元素即可,让两个对称的元素共享一个存储空间。 2.1.2 三角矩阵 ????????以主对角线划分,三角矩阵有上三角和下三角两种。上三角矩阵是指矩阵的下三角(不包括对角线)中的元素均为常数c或是零的n阶方阵,如图4.3(b)所示;下三角矩阵正好相反,它的主对角线上方均为常数c或零,如图4.3(a)所示。一般情况下,三角矩阵的常数c均为零。 2.2 稀疏矩阵
三元组表: ????????如果将表示稀疏矩阵非零元素的三元组按行优先的顺序排列,则可得到一个其结点均为三元组的线性表,将这种线性表的顺序存储结构称为三元组表。 二、广义表1.广义表基础????????广义表是线性表的推广,又称列表。线性表的元素仅限于原子项,即每个数据元素只能是一个数或一个记录,如果放松对线性表元素的这种限制,允许它们自身具有结构,由此就产生广义表的概念。 1.1 广义表的定义????????广义表是n(n≥0)个元素,,...,的有限序列,其中或者是原子项,或者是一个广义表,通常记作LS=(,,...,)。LS是广义表的名字,n为它的长度。若又是广义表,则称它为LS的子表。为了区分原子和广义表,在书写时习惯上用大写字母表示广义表,用小写字母表示原子。通常用圆括号将广义表括起来,用逗号分隔其中的元素。当广义表LS非空时, 称第一个元素是LS的表头(head) , 其余元素组成的表(,...,) 称为LS的表尾(tail) 。 1.2 广义表的存储结构????????通常采用链式存储结构,每个元素可用一个结点表示,结点结构如下所示: ????????如图所示,表示原子的节点构成由 tag 标记位、原子值和 tp 指针构成,表示子表的节点由 tag 标记位、hp 指针和 tp 指针构成。 博主创作不易,喜欢这篇博客的朋友们点个赞吧!(≧?≦)ノ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 15:39:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |