线性结构的存储类型

news2024/12/24 20:57:08

线性结构的存储类型

顺序标:顺序标就是数组,也成为向量vector、高维向量及称为张量即tensor
链表:单链表、双链表、循环链表

线性表概念

表目、文件、索引、表的长度、空表
线性表由节点表和关系表组成二元组;

  • 节点集由有限的顺序元素组成,关系则有前驱、后继关系。第一个元素称为表头,最后一个元素称为表尾,其他都是内部元素。前驱后继关系具有反对称性和传递性。
  • 元素在线性表中的位置称为下标或者是索引。
  • 元素的个数称为表长,长度为0的表就是空表,线性表易于存储和操作。

线性表按照访问方式分为三种类型:

  • 直接访问型:可以根据下标定位元素的位置。如数组向量就是直接访问的线性表,单个的记录类型也是线性结构
  • 目录索引型:例如字典还有散列表
  • 顺序访问型:必须在表中挨个查找所需元素,例如链表,为了提高检索的速度,做一些有效的索引。
    在这里插入图片描述
    数据结构由逻辑、存储和运算三个因素的不同,只要有一个有所不同,就可以看作不同的数据结构。

线性表的逻辑结构

  • 线性表的长度
  • 表头
  • 表尾
  • 当前位置
    在这里插入图片描述
    线性表的存储结构:
    顺序表:按照索引值从小到大存在一片相邻的连续区域
    紧凑结构
    在这里插入图片描述
    链表:
  • 单链表
  • 双链表
  • 循环链表
    在这里插入图片描述
    根据存储结构不同分为数组、链表
    顺序表是一个非常高效的存储结构就表达了逻辑关联,不需要额外的存储域就表达逻辑上相邻关系
    链表需要通过指针的关系来表达逻辑顺序,因此需要指针这样的额外存储空间
    另外,链表的存储效率不如顺序表
    线性表分类:

线性表

–不限制操作

–插入和删除都在同一端进行

在这里插入图片描述
按照操作可以把线性表分为普通线性表、栈、队列三种
普通的线性表,操作不受任何限制
栈的插入和删除在同一端进行
队列的插入和删除分别在两端进行
栈的先进后出的性质,在深度优先搜索、递归等算法中有很好地应用
队列的先进先出的性质,在宽度优先搜索、层次化处理算法中有很好的应用

顺序表

定义:

顺序表节点的定义基本上继承了线性表的模板,不同的是首先要定义一个数组,数组的最大长度为maxsize,数组当前元素的个数为curlen,只有在下标零到当前元素的区间中的那些数据在逻辑上是有效的

顺序表的操作:

跟线性表ADT中定义已知,主要是增删查改,定义了线性表的类模板接口以后,顺序或链式的不同实现方式,其相应的运算函数接口是一致的,因此在构造上一层应用的时候,调用的方式不需要改变,只要修改相应的头文件就可以。

顺序表中插入元素的方法

1;append是在表尾添加元素
2;insert在当前位置之前插入元素

顺序表的插入和删除操作

顺序表的插入操作还是需要保证逻辑结构和存储结构一致,是当前的待插入位置,首先要腾空,我们把相应的数据元素逐个下移,最后把待插入的元素X填入腾空的位置
在这里插入图片描述

顺序表插入的算法:

1;传入的参数是当前位置p和待插入的值value,判断一下表中是否还有存储空间;
2;如果表已经满了,则插入失败;
3;否则擦好看待插入位置p是否在表的逻辑长度范围内也就是[0, curlen]之间,如果越界,则不允许插入;
4;如果是一个有效的可插入位置,从表尾开始到待插入的位置的元素,逐个后移一位,接着把待插入的元素填入刚腾出的位置P,完成插入操作,线性表规模增加了1,返回值表示插入成功。
5;删除是插入的逆操作,为了保持逻辑和存储对应,删除当前元素知乎,从下一个元素已知到表尾逐个往上移,当前线性表的元素个数-1
在这里插入图片描述

顺序表的删除算法

1;首先传入待删除的下标位置p,检查当前的长度,如果小于等于零,那就是空表,不允许删除。
2;检查下标P是不是在[0,curlen],合理的顺序表元素范围之内,如果超出当前表的下标范围,则报告删除操作非法;
3;对于合法的下标范围的p,从当前元素一直到表尾,把后面的元素逐个往前移,表的实际长度缩短1;
4;删除后顺序表还保持了紧密的存储特性,也就是存储结构保留了顺序的逻辑顺序关系

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

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

相关文章

微服务---微服务保护Sentinel基本使用

微服务保护 1.初识Sentinel 1.1.雪崩问题及解决方案 1.1.1.雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I&#xff…

计算机网路常见面试题(上)

计算机网络基础 # 网络分层模型 # OSI 七层模型是什么?每一层的作用是什么? OSI 七层模型 是国际标准化组织提出一个网络分层模型,其大体结构以及每一层提供的功能如下图所示: 每一层都专注做一件事情,并且每一层都…

SQL注入漏洞学习简记

SQL注入漏洞危害 id1 and 1 1-- id1 and 1 2-- id1 and 1 1-- id1 and 1 2-- 可以用来判断是字符型注入/数字型注入 id1 order by 3 -- id1 order by 4 -- 这些SQL注入语句中的 order by 子句用于对结果进行排序,而排序的字段编号是从 1 开始的。如果在 orde…

【论文导读】Causality Inspired Representation Learning for Domain Generalization

Causality Inspired Representation Learning for Domain Generalization 阅读笔记_1100dp的博客-CSDN博客Causality Inspired Representation Learning for Domain Generalization 阅读笔记https://blog.csdn.net/qq_44901656/article/details/127341310这一篇讲的不错&#x…

业内常用即时传输网盘

工具名称 业内常用即时传输网盘 功能简介 无需登录,短时间内有效,多用于传输小型敏感文件 外部链接 请见文内 内部网盘链接 在线站点,无网盘链接 使用说明 许多安全行内人士在团队内互传敏感文件时,为实现上传和下载文件…

【Hugging Face】Hugging Face 主要类和函数介绍

Hugging Face 主要类和函数介绍 Hugging face是什么?什么是自然语言处理?PipelineDatasetPipeline on GPUMetricsAutoClasses在本地保存和加载模型结论参考资料 本文旨在为初学者介绍Hugging Face的主要类和函数,包括Pipeline, Datasets, Met…

Python小姿势 - Python学习笔记:如何使用Python创建一个简单的计算器

Python学习笔记:如何使用Python创建一个简单的计算器 在本教程中,我们将学习如何使用Python创建一个简单的计算器。我们将学习如何使用Python的内置函数input()和print(),以及如何使用Python的运算符来完成这个项目。 首先,让我们…

HBase(1):简介

1 Hadoop 从 1970 年开始,大多数的公司数据存储和维护使用的是关系型数据库大数据技术出现后,很多拥有海量数据的公司开始选择像Hadoop的方式来存储海量数据Hadoop使用分布式文件系统HDFS来存储海量数据,并使用 MapReduce 来处理。Hadoop擅长…

全国计算机等级三级网络技术试卷详解(二)

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 1. 下列属于广域网QoS技术的是() A) RSVP B) PSTN C) MSTP D) ISDN 属于广域网QoS技术的是RSVP。目前宽带城域网保证服务质量QoS要求…

SpringCould+Vue3-Element-Admin 登录接口,用户信息接口以及Token验证的实现【VegePig教育平台】

文章目录 一.SpringCouldVue3-Element-Admin 登录接口,用户信息接口以及Token验证的实现【VegePig教育平台】1.1 背景1.2 数据库 二、登录接口及其Token实现2.1 前端2.2 后端2.2.1 控制层2.2.2 service层2.2.3 工具类:CreateJwt2.2.4 Dao-Mapper 三、用户…

Android NDK 开发入门学习

android ndk技术早已经不是什么新的技术,但是由于工作中没有涉及到,所以一直没有尝试,今天抽空了解学习一下,顺便记录一下,方便后续回顾,由于是刚学习,很多资料也是网上找的,写的不对…

Docker 容器学习【1】

1.容器概述 1.1什么是容器 容器是一种沙盒技术,主要目的是为了将应用运行在其中,与外界隔离;及方便这个沙盒可以被转移到其它宿主机器。本质上,它是一个特殊的进程。通过名称空间(Namespace)、控制组&…

vivo 推送系统的容灾建设与实践

作者:vivo 互联网服务器团队 - Yu Quan 本文介绍了推送系统容灾建设和关键技术方案,以及实践过程中的思考与挑战。 一、推送系统介绍 vivo推送平台是vivo公司向开发者提供的消息推送服务,通过在云端与客户端之间建立一条稳定、可靠的长连接…

BI实施项目干系人分析案例

最近有在学项目管理,做了个项目干系人分析的小案例 项目背景:BI决策报表实施项目,主要为了甲方公司高层及经理做一些决策报表。 1.识别项目干系人 项目组主要成员: 乙方:王某(技术leader)&am…

关于小波,Morlet,Grossmann,Meyer,Daubechies,Mallat

转自:未来数学家,向大佬致敬。 匈牙利电子工程师丹尼斯加博尔(Dennis Gabor)1946年提出加窗傅里叶变换,开创了在时间-频率平面上分析信号的方法,Gabor还发明了全息摄影术,这项工作让他获得了19…

Clickhouse的数据副本协同原理详解(借助ZK实现)

Clickhouse的数据副本协同原理详解(借助ZK实现) 文章目录 Clickhouse的数据副本协同原理详解(借助ZK实现)Clickhouse数据副本副本的特点 ReplicatedMergeTree原理解析数据结构Zookeeper内的节点结构元数据判断标识操作日志 Entry日…

【AXU3EG】Zynq UltraScale平台启动引导过程

Zynq UltraScale MPSoC(16nm) 的核心是两个 CPU 模块: 应用处理单元(APU):四核 ARM Cortex-A53,适合于 Linux 和裸机应用程序。实时处理单元(RPU):双核 ARM …

Unity 高级程序员应该具备怎样的能力?要怎样成长为 Unity 高级程序员?

如何从零基础小白成长为 Unity 高级程序员?【全篇学习内容免费!快来白嫖】 高能预警,下文包含从零基础新手到高级程序员一站式技术学习、学习方法、心态等内容,供各个阶段的同学进行参考。 从零基础到高级程序员 上干货 话不多说…

MySQL——存储过程和函数从零基础到入门必学教程(涵盖基础实战)

文章目录 目录 文章目录 前言 一、创建存储过程 二、在存储过程中使用变量 1.定义变量 2.为变量赋值 三、光标的使用 1.打开光标 2.打开光标 3.使用光标 4.关闭光标 四、流程控制的作用 1.IF语句 2.CASE语句 3.LOOP语句 4.LEAVE语句 5.ITERATE语句 6.REPEAT语…

碳酸氢锂硫酸锂溶液除钙镁

#碳酸氢锂硫酸锂溶液除钙镁 随着新能源汽车快速发展,以粗Li2CO3(85-98%)和工业级Li2CO3(98.5-99.0%)为原料制备高纯电池级Li2CO3(99.5-99.9%)的工艺的突破,显得尤为重要,正越来越受到人们的关注。 粗Li2CO3…