12-数据结构-数组、矩阵、广义表

数组、矩阵、广义表


目录

数组、矩阵、广义表

  一、数组

        二.矩阵

三、广义表



  一、数组

        这一章节理解基本概念即可。数组要看清其实下标是多少,并且二维数组,存取数据,要先看清楚是按照行存还是按列存,按行则是正常一行一行的去读写,按列则是,从左至右,一列一列的弄。

        此外,数组中具体坐标的空间大小要会计算,每块存储单元,算到该数组坐标的前一位的数组大小:如A[5][3],起始位A[0][0],则计算A[5][3]的时候,先计算0-4行的空间大小,再计算第5行的大小,第五行的时候,是计算0-2列即0,1,2,三列,所以第五行空间个数为3,将其加上即可。

二、矩阵

        则是掌握基本矩阵的代码,矩阵相加,相乘,转置。

  1. 其次要会压缩矩阵,压缩矩阵的目的是减少存储单元
  2. 方法是,给矩阵中的有效数据,存进一维数组中去。
  3. 这个时候就需要压缩矩阵的计算了,一般计算特殊矩阵:
  4. 对称阵,上三角下三角,画一个简单的矩阵,然后根据按行存或者按列存,进行存储,然后计算,一般是等差数列,然后加上最后一行或最后一列的有效数据,这个就看具体是多少了。一般遇到选择题,让求规律的,在看清矩阵和一维数组起始下标的前提下,找具体坐标试一下,如A[0][0]---0,在一维数组里面是第0个,给(行)i=0,(列)j=0,代入试一下即可。如果遇到算具体数值的,则是画一个大概矩阵,然后找规律。按行排列,则先计算0到i-1行的个数(一般为等差数列,第0行有1个,第1行有2个第i-1行有i个,则共0到i-1,总个数为i个,a1=1,an=i所以等差数列为(\frac{i*(i+1)}{2}),这是第0到i-1行的总个数,再计算第i行的个数,按列算,j+1个,所以总个数为\frac{i*(i+1)}{2}+j+1,但存进数组的话,若数组下标为1,则\frac{i*(i+1)}{2}+j+1+1,要看具体矩阵和数组的起始下标。
  5. 对三角矩阵,则是待定系数法,为了省事直接k=ai+bj+c,其中k为存进一维数组的下标,i为矩阵的行,j为矩阵的列,c为常数,然后再去带具体坐标去解方程组即可。但上面设的公式,还要看具体情况去设置,如果有的个数为等差数列,则肯定有行的平方或者列的平方。
  6. 之后是稀疏矩阵:矩阵中大部分都是0的矩阵。

稀疏矩阵的压缩,就是给矩阵中非零元素,存起来。

稀疏矩阵的顺序存储(设成结构体,里面包含各种变量)

1.三元组表示法

按行优先存储,所以稀疏矩阵三元组,不好逆置,逆置的话,需要按列重新搞一下。

        三元组,就是数组结构体里定义三个变量,分别是行,列,以及坐标值。其中数组结构体,第一个里面存的是,矩阵信息,即共几行几列,有几个非零元素。因此如果题中有5个非零元素,则三元组数组,要5+1个数组空间。

稀疏矩阵转化三元组步骤:

        1.先计算矩阵中非零元素个数。即二维数组遍历,非零的,count(计数器)+1。最后返回count。

        2.之后定义一个三元组数组,然后开始写转换函数,返回类型为三元组指针类型,即返回三元组。先存储矩阵信息,再三元组数组第一个位置,随后定义个记录器,index=1,表示实际非零元素个数的下标,随后开始遍历,当矩阵元素不等于零的时候,存进index坐标下,随后行和列也记录,之后,index+1,后移动,直到遍历结束。

2.伪地址存储

数据结构体,里面变量为伪地址变量以及具体值。伪地址计算方法,可直接查,按照行或者列,从1开始,哪个位置非零,就记录。

稀疏矩阵的链式存储

1.邻接表法。

用一维数组(矩阵行)去索引,索引内容,坐标值,列下标,以及同行下一个非零元。

即同一行,串成一个链,只串同行非零元素。

2.十字链表

三、广义表

广义表时线性表的推广,不是线性表,而是层次结构,树。

每个广义表用()括住,广义表里面可以套广义表,每个广义表是一个小整体。广义表里面,可以由原子元素(单个值),可以是广义表。

广义表的深度,长度和表头表尾

深度:最多的层数,即广义表包含几个,查括号。化成树的话,为最底下的那个广义表。

长度:第一层元素个数,化成树的话,是第二层结点.

表头:广义表非空时,第一个元素。即表头为取第一个元素的值。

表尾:实际上是除了表头以外,其他构成的新的广义表。是个广义表。

例如:((a),(b,f),(v))

表头为:(a)//只包含a的广义表,  不是a,a是原子元素。

表尾:((b,f)(v)),新构成的广义表.

再对表尾求

表头:(b,f),广义表。   不是((b,f)),表头为取第一个元素

表尾:( (v) ),是个广义表,由广义表(v)构成,即删除表头,剩下组成的新的广义表,


广义表的链式存储

有两个结点,第一个为广义表结点,包含标记域,表头,表尾指针,第二个是原子元素结点,包含标记域,和具体值。其中标记域为1,表示广义表,标记域为0表示原子元素。

一般,先画出第一个广义表结点,然后头节点指向出来,尾指针指向尾结点,以此类推。

扩展的线性表存储结构

跟链式存储差不多,只不过后面的指针变成了,左孩子又兄弟了,头指针指向最左边的孩子,之后孩子的尾指针,指向同级的右兄弟。(这种一般先画成树的形式,好判断)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/37597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AIF360入门教学

1、AIF360简介 AI Fairness 360 工具包(AIF360)是一个开源软件工具包,可以帮助检测和缓解整个AI应用程序生命周期中机器学习模型中的偏见。在整个机器学习的过程中,偏见可能存在于初始训练数据、创建分类器的算法或分类器所做的预测中。AI Fairness 360…

人工智能在监控系统中的预测与优化:提升效率和响应能力

引言:人工智能的发展给监控系统带来了新的可能性,通过分析历史监控数据和其他相关数据,人工智能可以预测未来可能发生的事件,如交通拥堵、安全隐患等,并帮助优化监控系统的配置和资源分配。这种预测和优化的能力可以提…

2023年国赛数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

6.2.0在线编辑:GrapeCity Documents for Word (GcWord) Crack

GrapeCity Word 文档 (GcWord) 支持 Office Math 函数以及转换为 MathML GcWord 现在支持在 Word 文档中创建和编辑 Office Math 内容。GcWord 中的 OMath 支持包括完整的 API,可处理科学、数学和通用 Word 文档中广泛使用的数学符号、公式和方程。以下是通过 OMa…

vue自定义指令--动态参数绑定

在企业微信侧边栏应用中,给dialog添加了拖拽功能,但是因为dialog高度超过了页面高度,所以高度100%时拖拽有个bug--自动贴到窗口顶部而且企业侧边栏宽高都有限制,拖拽效果并不理想,所以就想缩小dialog再进行拖拽。 拖拽…

IntelliJ IDEA和Android studio怎么去掉usage和作者提示

截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ 提取码&#xf…

457. 环形数组是否存在循环

457. 环形数组是否存在循环 原题链接:完成情况:解题思路:参考代码:经验吸取 原题链接: 457. 环形数组是否存在循环 https://leetcode.cn/problems/circular-array-loop/description/ 完成情况: 解题思路…

使用Pandas进行数据清理的入门示例

数据清理是数据分析过程中的关键步骤,它涉及识别缺失值、重复行、异常值和不正确的数据类型。获得干净可靠的数据对于准确的分析和建模非常重要。 本文将介绍以下6个经常使用的数据清理操作: 检查缺失值、检查重复行、处理离群值、检查所有列的数据类型…

opencv进阶02-在图像上绘制多种几何图形

OpenCV 提供了方便的绘图功能,使用其中的绘图函数可以绘制直线、矩形、圆、椭圆等多种几何图形,还能在图像中的指定位置添加文字说明。 OpenCV 提供了绘制直线的函数 cv2.line()、绘制矩形的函数 cv2.rectangle()、绘制圆的函数cv2.circle()、绘制椭圆的…

【Quarkus技术系列】「云原生架构体系」在云原生时代下的Java“拯救者”是Quarkus,那云原生是什么呢?

云原生时代下的Java"拯救者" 在云原生时代,其实Java程序是有很大的劣势的,以最流行的spring boot/spring cloud微服务框架为例,启动一个已经优化好,很多bean需要lazy load的application至少需要3-4秒时间,内…

一站式自动化测试平台-Autotestplat

3.1 自动化平台开发方案 3.1.1 功能需求 3.1.3 开发时间计划 如果是刚入门、但有一点代码基础的测试人员,大概 3 个月能做出演示版(Demo)进行自动化测试,6 个月内胜任开展工作中项目的自动化测试。 如果是有自动化测试基础的测试人员,大概 …

面试热题(数组中的第K个最大元素)

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 输入: [3,2,1,5,6,4] 和 k 2 输出: 5提到数组中最大元素,我们往往想到就是先给数组…

判断自己网络所在的NAT类型

文章目录 各NAT类型介绍软件准备流程 各NAT类型介绍 NAT0: OpenInternet,没有经过NAT地址转换,公网IP NAT1: Full Cone NAT,动态家宽可以达到最优的状态,外网设备可以主动发信息给NAT1网络内的设备。 NAT2: Address-Restricted C…

Mybatis 源码 ④ :TypeHandler

文章目录 一、前言二、DefaultParameterHandler1. DefaultParameterHandler#setParameters1.1 UnknownTypeHandler1.2 自定义 TypeHandler 三、DefaultResultSetHandler1. hasNestedResultMaps2. handleRowValuesForNestedResultMap2.1 resolveDiscriminatedResultMap2.2 creat…

K8S系列二:实战入门

写在前面 本文是K8S系列第二篇,主要面向对K8S新手同学,阅读本文需要读者对K8S的基本概念,比如Pod、Deployment、Service、Namespace等基础概念有所了解。尚且不熟悉的同学推荐先阅读本系列的第一篇文章:《K8S系列一:概…

远程控制医疗行业应用解析:如何满足医院合规需求?

远程控制医疗行业应用解析:如何满足医院合规需求? 作为一个起源于IT行业的技术,以远程桌面为基础的远程控制技术目前在医疗领域也已经有了比较广阔的应用前景,尤其是在医疗数字化系统/设备的远程运维场景,已经有了一些…

如何正确下载tomcat???

亲爱的小伙伴,千万别再去找下网站下载啦,这样詪容易携带病毒。 我们去官方网址下载。 Apache Tomcat - Welcome! 最后下载解压即可。。。

2024软考系统架构设计师论文写作要点

一、写作注意事项 系统架构设计师的论文题目对于考生来说,是相对较难的题目。一方面,考生需要掌握论文题目中的系统架构设计的专业知识;另一方面,论文的撰写需要结合考生自身的项目经历。因此,如何将自己的项目经历和专业知识有机…

SQL server中substring 的用法

一:substring函数是SQL中截取字段数据中的其中一部分 --列:提取abdcsef中的abc数据,使用substring实现select substring(abdcsef,1,3) --‘1’表示截取的起始位置是从第一个字符开始,‘3’表示截取后得到的字符串长度为3个字符 二&#xff1…

React源码解析18(7)------ 实现事件机制(onClick事件)

摘要 在上一篇中,我们实现了useState的hook,但由于没有实现事件机制,所以我们只能将setState挂载在window上。 而这一篇主要就是来实现事件系统,从而实现通过点击事件进行setState。 而在React中,虽然我们是将事件绑…