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.十字链表

三、广义表

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

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

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

深度:即最外层元素个数,查右括号,最多的括号数。如:((a),(b,f),(v))  ((a),(b,f),(v)),最多括号数为2,所以深度为2,最外层括号+下一层。同层不能多算,取每层最大括号

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

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

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

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

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

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

再对表尾求

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

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


广义表的链式存储

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

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

扩展的线性表存储结构

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

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

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

相关文章

【AIGC 讯飞星火 | 百度AI|ChatGPT| 】智能对比

AI智能对比 🍸 前言🍺 概念类对比🍵 讯飞🍵 百度AI🍵 chatGPT 🍹 功能类对比☕ 讯飞☕ 百度AI☕ chatGPT 🥃 可输入字数对比🥤 百度AI🥤 讯飞🥤 chatGPT &…

认识Transformer:入门知识

视频链接: https://www.youtube.com/watch?vugWDIIOHtPA&listPLJV_el3uVTsOK_ZK5L0Iv_EQoL1JefRL4&index60 文章目录 Self-Attention layerMulti-head self-attentionPositional encodingSeq2Seq with AttentionTransformerUniversal Transformer Seq2Seq …

ansible入门

ansible入门 一.ansible 背景介绍 Ansible 是一个广受欢迎的 IT 自动化系统。可以用来处理配置管理、应用自动化部署、云资源配给、网络 自动化和多借点部署等任务。其也可以使得复杂的变更如带负载均衡的零停机滚动更新更加容易。Ansible.com 1.1 自动化运维概念 1.1.1 运维…

专业课只考2门,计算机学硕最低分290的江苏院校

南京工业大学 考研难度(☆) 内容:23考情概况(拟录取和复试分析)、专业目录、23复试详情、各专业考情分析。 正文1332字,预计阅读:3分钟。 2023考情概况 南京工业大学计算机相关各专业复试和…

超实用的批量管理工具 pssh 和 window 文件传输工具 pscp

文章目录 一、概述1)pssh2)pscp 二、pssh 工具安装三、pssh 命令的基本语法四、pscp 工具安装1)Windows 上安装2)Linux 系统上安装 五、 pscp 命令的基本语法1)从 windows 向 linux 传文件2)从 linux 传文件…

Golang协程,通道详解

进程、线程以及并行、并发 关于进程和线程 进程(Process)就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位,进程是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一…

在APP中如何嵌入小游戏?

APP内嵌游戏之所以能火爆,主要是因为互联网对流量的追求是无止境的,之前高速增长的红利期后,获取新的流量成为各大厂商的挑战,小游戏的引入,就是这个目的,为已有的产品赋能,抢占用户注意力和使用…

leetcode 139. 单词拆分

2023.8.18 本题可以看作完全背包问题,字符串s为背包,字符串列表worddict中的字符串为物品。由于本题的物品集合是排列问题(即物品的排列顺序对结果有影响),所以遍历顺序为:先遍历背包再遍历物品。 接下来看代码: clas…

LVS-DR集群(一台LVS,一台CIP,两台web,一台NFS)的构建以及LVS-DR模式工作原理和特点

一.LVS-DR工作模式原理和特点 1.工作模式 2.模式特点 二.构建环境 1.五台关闭防火墙,关闭selinux,拥有固定IP,部署有http服务的虚拟机,LVS设备下载ipvsadm工具,NFS 设备需要下载rpcbind和nfs-utils 2.实现功能 3…

图数据库_Neo4j中文版_Centos7.9安装Neo4j社区版3.5.9_基于jdk1.8---Neo4j图数据库工作笔记0012

由于我们在国内使用啊,具体还是要用中文版滴,找了好久这个neo4j,原来还是有中文版的, https://we-yun.com/doc/neo4j-chs/ 中文版下载地址在这里: 所有版本都在这里了,需要哪个自己去下载就可以了,要注意下载以后,参考: https://we-yun.com/blog/prod-56.html 在这个位置下载…

YOLOv8改进后效果

数据集 自建铁路障碍数据集-包含路障,人等少数标签。其中百分之八十作为训练集,百分之二十作为测试集 第一次部署 版本:YOLOv5 训练50epoch后精度可达0.94 mAP可达0.95.此时未包含任何改进操作 第二次部署 版本:YOLOv8改进版本 首…

linux——mysql的高可用MHA

目录 一、概述 一、概念 二、组成 三、特点 四、工作原理 二、案例 三、构建MHA 一、基础环境 二、ssh免密登录 三、主从复制 master slave1 四、MHA安装 一、环境 二、安装node 三、安装manager 一、概述 一、概念 MHA(MasterHigh Availability&a…

最强自动化测试框架Playwright(37)-网络

介绍 Playwright 提供 API 来监控和修改浏览器网络流量,包括 HTTP 和 HTTPS。页面执行的任何请求,包括 XHR 和获取请求,都可以被跟踪、修改和处理。 模拟接口 查看我们的 API 模拟指南,了解有关如何 模拟 API 请求&#xff0c…

Sentinel规则持久化

首先 Sentinel 控制台通过 API 将规则推送至客户端并更新到内存中,接着注册的写数据源会将新的规则保存到本地的文件中。 示例代码: 1.编写处理类 //规则持久化 public class FilePersistence implements InitFunc {Value("spring.application:n…

java+springboot+mysql银行管理系统

项目介绍: 使用javaspringbootmysql开发的银行管理系统,系统包含超级管理员、管理员、客户角色,功能如下: 超级管理员:管理员管理;客户管理;卡号管理(存款、取款、转账&#xff09…

GRPC 学习记录

GRPC 安装 安装 grpcio、grpcio-tools、protobuf、 pip install grpcio -i https://pypi.tuna.tsinghua.edu.cn/simple pip install grpcio-tools -i https://pypi.tuna.tsinghua.edu.cn/simple pip install protobuf -i https://pypi.tuna.tsinghua.edu.cn/simple常用类型 p…

pytorch3d成功安装

一、pytorch3d是什么? PyTorch3D的目标是帮助加速深度学习和3D交叉点的研究。3D数据比2D图像更复杂,在从事Mesh R-CNN和C3DPO等项目时,我们遇到了一些挑战,包括3D数据表示、批处理和速度。我们开发了许多有用的算子和抽象&#xf…

tauri-react:快速开发跨平台软件的架子,支持自定义头部UI拖拽移动和窗口阴影效果

tauri-react 一个使用 taurireacttsantd 开发跨平台软件的模板,支持窗口头部自定义和窗口阴影,不用再自己做适配了,拿来即用,非常 nice。而且已经封装好了 tauri 的 http 请求工具,省去很多弯路。 开原地址&#xff…

如何基于 ACK Serverless 快速部署 AI 推理服务

作者:元毅 随着 AI 浪潮的到来,各种 AI 应用层出不穷,众所周知 AI 应用对 GPU 资源强烈依赖,但 GPU 很昂贵,如何降低 GPU 资源使用成本成为用户首要问题。而 AI 与 Serverless 技术结合,完全可以达到按需使…

Electron入门,项目启动。

electron 简单介绍: 实现:HTML/CSS/JS桌面程序,搭建跨平台桌面应用。 electron 官方文档: [https://electronjs.org/docs] 本文是基于以下2篇文章且自行实践过的,可行性真实有效。 文章1: https://www.cnbl…