数据结构——广义表

news2024/11/28 2:30:01

文章目录

  • 前言
  • 二、特殊矩阵的压缩存储
    • 数组的存储结构和实现
      • 按行优先存储
      • 按列优先存储
    • 矩阵的压缩存储
      • 稀疏矩阵
    • 广义表
  • 总结


前言

数组,数组的压缩存储,广义表


二、特殊矩阵的压缩存储

数组的存储结构和实现

对于多维数组,可以分为按行优先存储和按列优先存储,但都是按顺序存放在一个连续的空间中

按行优先存储

aij:aij前有n*(i-1)个元素
在第i行的aij前共有(j-1)个元素
LOC(aij)=LOC(a11)+[(i-1)n+(j-1)]*L

例:二维数组M的每个元素含4个字符,每个字符占用一个存储单元,行下标i从1变到5,列下标从1到6,那么按行存储是元素M[4][6]的起始地址为()

M[4][6]=LOC(a11)+(3*6+5)4= LOC(a11)+234

按列优先存储

Loc(aij)=Loc(a11)+[(j-1)*m+(i-1)]*L
例:一个二维数组中,每个元素占用3个存储单元,行标从1到8,列从1到10,则A[8][5]的起始地址应该是?

按行:A[8][5]=(7*10+4)3+Loc(a11)=743+Loc(a11)

按列:A[8][5]=(4*8+7)*3+Loc(a11)=Loc(a11)+117

`例:设数组a[1…60,1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为_______

按行:(31*70+57)*2+2048

按列:(57*60+31)*2+2048

矩阵的压缩存储

压缩存储:为多个值相同的元素只分配一个存储空间,对0不分配存储空间
特殊矩阵:具有许多相同元素或0元素,分布有一定规律的矩阵(对称矩阵、上下三角矩阵、对角矩阵)
对称矩阵: n阶方阵中,按主对角线对称,只存放主对角线和下三角元素(或上三角元素,又或按行或者按列存储)(共n(n+1)/2)
三角矩阵: 上或下三角矩阵,其另外一角都为同一常数,存储完对角线和下三角元素后,紧接着存储上三角元素一次(共n(n+1)/2+1)
三对角矩阵: 所有元素集中在三条主对角线上,其余均为0;(i,j)元素在数组中的下标为k=2i+j-3,反之,若元素在数组中第k个位置,则 i=(k+1)/3+1向下取整,j=k-2i+3i 取下限

稀疏矩阵

定义:非零元较零元少,且分布没有一定规律的矩阵
压缩存储原则:只存矩阵的行列维数和每个非零元的行列下标及其值
三元组:一个稀疏矩阵所有非零元素三元组的集合,再增加一个表示矩阵行数,列数和非零元个数的特殊三元组,就可以唯一地确定一个稀疏矩阵,把这些三元组的总体,称为该稀疏矩阵的“三元组表”

在这里插入图片描述
在这里插入图片描述

广义表

  1. 定义:是一种特殊的线性表,表中的数据元素,既可以是原子,也可以是子表
  2. 广义表的表长:广义表中数据元素的个数

例:
A=( ) 表长n=0
B= (a) 表长n=1
C=(a,(b,c,d)) 表长n=2
D=(A,B,C)=(( ),(a),(a(b,c,d))) 表长n=3

  1. 广义表的深度:广义表中括号的重数
  2. 广义表的头和尾
    A(e)
    表头:Head(A)=e
    表尾:Tail(A)=( )
  3. 广义表的表头:广义表中第一个数据元素,既可以是原子,也可以是子表
  4. 广义表的表尾:广义表中除了表头,剩下都是尾,必须是子表

``
在这里插入图片描述


总结

  1. 数组
  2. 矩阵的压缩存储
  3. 广义表

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

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

相关文章

UnityVR--组件9--视频组件VideoPlayer

目录 前言 参数解释 RenderMode渲染方式 VideoPlayer类中的API 前言 在之前的VR场景中已经使用过VideoPlayer播放视频(Unity.UI的交互(6)-播放视频),不过在VR中设置是有些不同的,这里更详细地说明一下V…

8.面向对象编程(高级部分)|Java学习笔记

文章目录 类变量和类方法类变量类变量使用注意事项和细节 类方法类方法使用注意事项和细节 理解 main 方法语法代码块代码块使用注意事项和细节讨论 单例设计模式单例模式应用实例饿汉式 VS 懒汉式 final 关键字final 使用注意事项和细节 抽象类抽象类的介绍抽象类使用的注意事…

软件测试|测试金字塔是什么,它的目的是什么,以及它包含哪些层次?

一、测试金字塔的概念: 测试金字塔是2009年Mike Cohn在他的著作《Succeeding with Agile》一书正式提出的。他是一个类比的概念,形容每一层,或者说不同集成阶段测试覆盖率和知行效率之间的一个相对关系。 测试金字塔最初的原型分三层&#…

chatgpt赋能python:Python循环间隔-了解如何在循环中增加延时

Python循环间隔 - 了解如何在循环中增加延时 在Python编程中,循环是非常常见且重要的控制语句。 它使我们可以多次执行代码块。 但是,在有些情况下,您可能需要在循环之间增加一定的延时时间。 这就是Python循环间隔的概念。 在本文中&#x…

初次使用PPYOLOE-R

目的:优化基于yolov5-obb旋转目标检测算法的证件区域检测,之前的方法是基于anchor,每次使用都要调试anchor;而ppyoloe-r是free anchor的算法; 源码位置:https://github.com/PaddlePaddle/PaddleDetection/…

学成在线----day2

1、mybatis-plus分页 pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.ap…

【大数据之Hive】九、Hive之DDL(Data Definition Language)数据定义语言

1 数据库 [ ] 里的都是可选的操作。 1.1 创建数据库 语法&#xff1a; create database [if not exists] database_name [comment database_comment(注释)] [location hdfs_path] [with dbproperties (property_name-propertyproperty_value,...)]; 如&#xff1a; creat…

真实性能测试案例之性能分析与报告

今天主要跟大家分享一个曾经所做的真实性能测试的案例&#xff0c;主要为其中性能测试分析报告过程部分&#xff0c;希望能对你以后怎么做性能分析和报告有所帮助。这个案例的测试目的为&#xff1a;在线考试为“XX平台”中的一个重要模块&#xff0c;根据目前业务的需要&#…

ChatGPT实用使用指南 让它解你所问

Chatgpt无疑是这几年来影响力最大的AI技术之一&#xff0c;生成式的AI模型正在促进各个行业的效率和自动化发展&#xff0c;Chatgpt对于个人、企业和各个行业都有着一定的影响 在我刚接触的时候&#xff0c;发现对Chatgpt的认知太肤浅了&#xff0c;一个最强的ai聊天机器人摆在…

实时检测Aruco标签坐标及位姿opencv-python4.6和4.7版本

先说opencv-contrib-python4.7.0.72时&#xff0c;aruco下面带曲线&#xff0c;但是程序也能跑&#xff0c;可以跑检测的&#xff0c;对比4.6版本需要改三个函数 4.6装opencv-contrib-python 4.7装opencv-contrib-python 1 cv2.aruco.Dictionary_get() cv2.aruco.getPredef…

Smali的使用技巧:快速定位Android应用程序中的关键代码

简述 Smali是一种Android应用程序的Dalvik虚拟机指令集汇编语言&#xff0c;用于编写和修改应用程序的DEX文件。通过编写和修改Smali代码&#xff0c;可以实现对Android应用程序的定制化和逆向分析。Smali语言类似于汇编语言&#xff0c;直接操作Dalvik虚拟机指令集。 Smali代…

2023最火的软件测试面试宝典,你刷过没?

这是一份最近疯传的软件测试面试宝典&#xff0c;你有刷过吗&#xff1f; 面试宝典一共400页&#xff0c;包括了测试基础102页&#xff0c;Linux基础38页&#xff0c;MySQL63页&#xff0c;web测试21页&#xff0c;app测试38页&#xff0c;selenium相关50页&#xff0c;性能测试…

02.引擎架构分类

简介 1.工具层 2.功能层&#xff1a;绘制、渲染、让世界里面的东西能看见、动起来 3.资源层&#xff1a;负责加载大量的数据和文件 4.核心层&#xff1a;游戏引擎的瑞士军刀&#xff0c;各种功能处理的内核 5.平台层&#xff1a;用于适配游戏不同的发行平台 第三方中间插…

3d渲染时预览和出图不一样怎么办?

在使用3dmax渲染时有时会遇到看到的图和渲染出来的图不一样的情况&#xff0c;这是为什么呢&#xff1f;有以下几方面的原因。 一、伽马 3dmax的伽马有很多&#xff0c;主要有显示伽马、输入伽马和输出伽马&#xff0c;其中预览图亮度由显示伽马决定&#xff0c;而图片亮度由输…

VUE.js中文官方文档

目录 创建一个 Vue 应用# 应用实例# 根组件# 挂载应用# DOM 中的根组件模板# 应用配置# 多个应用实例# 模板语法# 文本插值# 原始 HTML# Attribute 绑定# 简写# 布尔型 Attribute# 动态绑定多个值# 使用 JavaScript 表达式# 仅支持表达式# 调用函数# 受限的全…

隐私计算简介

随着数据规模的不断扩大和网络技术的快速发展&#xff0c;数据安全和隐私保护成为了热门的话题。隐私计算作为一种新兴的数据安全和隐私保护技术&#xff0c;为数据安全和隐私泄露问题提供了新的思路和方法。 2020年10月19日&#xff0c;Gartner发布2021年前沿战略科技趋势&am…

Blender3.2使用python脚本命令的三种方式, 以及后台渲染调用源码示例及说明

本文环境系统OS(Win10) 方式一&#xff0c;在Script(脚本)功能里面的Console(控制台输入python代码)。 如下图: 对应的三句代码是&#xff1a; print("Hi, blender.")import bpybpy.ops.mesh.primitive_cube_add(enter_editmodeFalse, alignWORLD, location(0,0, …

Vue3.0性能提升主要是通过哪几方面体现的(了解)

文章目录 一、编译阶段diff算法优化静态提升事件监听缓存SSR优化二、源码体积响应式系统 一、编译阶段 回顾Vue2&#xff0c;我们知道每个组件实例都对应一个 watcher 实例&#xff0c;它会在组件渲染的过程中把用到的数据property记录为依赖&#xff0c;当依赖发生改变&#…

【ICML 2023】Hiera详解:一个简单且高效的分层视觉转换器

【ICML 2023】Hiera详解&#xff1a;一个简单且高效的分层视觉转换器 0. 引言1. 模型介绍2. Hiera介绍2.1 为什么提出Hiera&#xff1f;2.2 Hiera 中的 Mask2.3 空间结构的分离和填充到底如何操作2.4 为什么使用Mask Unit Attn 3. 简化版理解4. 总结 0. 引言 虽然现在各种各样…

Docker 安装Tomcat、实现Tomcat集群

文章目录 1、寻找Tomcat镜像2、下载tomcat镜像&#xff08;下载最近版本&#xff09;(1) docker pull tomcat 下载(2) 查看镜像是否安装成功 3、启动容器&#xff08;跟安装Nginx一样&#xff09;4、 测试tomcat&#xff08;报错解决&#xff09;5、 搭建Tomcat集群 1、寻找Tom…