线性结构的存储类型

线性结构的存储类型

顺序标:顺序标就是数组,也成为向量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;删除后顺序表还保持了紧密的存储特性,也就是存储结构保留了顺序的逻辑顺序关系

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop 1:Apache Hadoop、HDFS

Hadoop核心组件 Hadoop HDFS(分布式文件存储系统):解决海量数据存储 Hadoop YARN(集群资源管理和任务调度框架):解决资源任务调度 Hadoop MapReduce(分布式计算框架):解决…

全景丨0基础学习VR全景制作,平台篇第13章:热点功能-总览介绍

全景丨0基础学习VR全景制作,平台篇第13章:热点功能-总览介绍 大家好,欢迎观看蛙色VR官方——后台使用系列课程! 一、热点功能概览 热点,指在全景作品中添加各种类型图标的按钮,引导用户通过按钮产生更多的…

关于电信设备进网许可制度若干改革举措的通告

Q:3月1日后,不再实行进网许可管理的11种电信设备是否还需要继续申请和使用标志? A:3月1日起,对不再实行进网许可管理的11种电信设备停止核发进网许可标志,已申请的标志可在证书有效期内继续使用。 Q&#…

Linux shell编程 条件语句if case

条件测试 test命令 测试表达式是否成立,若成立返回0,否则返回其他数值 格式1: test 条件表达式 格式2: [ 条件表达式 ]文件测试 [ 操作符 文件或者目录 ][ -e 1.txt ]#查看1.txt是否存在,存在返回0 echo $? #查看是上一步命令执行结果 0成…

mysql语句高级用法使用记录和sql_mode=only_full_group_by错误解决

最近工作时用到的几种用法记录一下 sql_modeonly_full_group_by 报错 sql出错示例如下 column ‘qnaq.ta.issue_org_code’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by 原因分析:…

【Java笔试强训 15】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥查找输入…

Educoder/头歌JAVA——Java Web:基于JSP的网上商城

目录 一、商品列表 本关任务 具体要求 结果输出 实现代码 二、商品详情 本关任务 JDBC查询方法封装 商品相关信息介绍 具体要求 结果输出 实现代码 三、商品搜索 编程要求 测试说明 实现代码 四、购物车列表 本关任务 JDBC查询方法封装 购物车相关信息介绍…

WizardKM:Empowering Large Language Models to Follow Complex Instructions

WizardKM:Empowering Large Language Models to Follow Complex Instructions Introduction参考 Introduction 作者表明当前nlp社区的指令数据比较单一,大部分都是总结、翻译的任务,但是在真实场景中,人们有各式各样的需求,这限制…

程序员阿里三面无理由挂了,被HR一句话噎死,网友:这可是阿里啊

进入互联网大厂一般都是“过五关斩六将”,难度堪比西天取经,但当你真正面对这些大厂的面试时,有时候又会被其中的神操作弄的很是蒙圈。 近日,某位程序员发帖称,自己去阿里面试,三面都过了,却被…

CH32F203RCT6 pin2pin兼容STM32F103RCT6

32位大容量通用型Cortex-M3单片机 CH32F203是基于Cortex-M3内核设计的工业级大容量通用微控制器,此系列主频高达144MHz,独立了GPIO电压(与系统供电分离)。资源同比增加了随机数单元,4组运放比较器;提高串口…

Python进阶项目--只因博客(bootstrap+flask+mysql)

前言 1.全民制作人们大家好,我是练习时长两年半的个人练习生只因坤坤, 喜欢唱,跳,rap,篮球,music...... 在今后的节目中,我还准备了很多我自己作词、作曲、编舞的原创作品, 期待的话…

Docker compose 制作 LNMP 镜像

目录 第一章.Nginx镜像 1.1安装环境部署 1.2.nginx镜像容器的配置 第二章.php镜像的安装部署 2.1.文件配置 第三章.mysql镜像的安装部署 3.1.文件配置 第四章.配置网页 4.1.进入容器mysql 4.2.浏览器访问: 第一章.Nginx镜像 1.1安装环境部署 systemctl s…

亚科转债,鹿山转债上市价格预测

亚科转债 基本信息 转债名称:亚科转债,评级:AA,发行规模:11.59亿元。 正股名称:亚太科技,今日收盘价:5.58元,转股价格:6.46元。 当前转股价值 转债面值 / 转…

新来一00后,给我卷崩溃了..

2022年已经结束结束了,最近内卷严重,各种跳槽裁员,相信很多小伙伴也在准备今年的金三银四的面试计划。 在此展示一套学习笔记 / 面试手册,年后跳槽的朋友可以好好刷一刷,还是挺有必要的,它几乎涵盖了所有的…

记录一次在x86 软件中使用dpdk 的历程(Makefile gcc改成g++)

我们一台服务器上原本是用grub下预留内存的方式, 然后把物理地址在板卡上的配置文件中传给L1. 但是在客户的环境上服务器windriver上不是能预留内存的. 所以服务器上需要在testMxx程序中用dpdk的方式分配出内存, 然后, 把物理地址通过sdp虚拟的网口, 用socket 传…

日撸 Java 三百行day38

文章目录 说明day381.Dijkstra 算法思路分析2.Prim 算法思路分析3.对比4.代码 说明 闵老师的文章链接: 日撸 Java 三百行(总述)_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护:https://github.com/fulisha-ok/…

接口测试入门必会知识总结(学习笔记)

目录 什么是接口? 内部接口 外部接口 接口的本质 什么是接口测试? 反向测试 为什么说接口测试如此重要? 越接近底层的 Bug,影响用户范围越广 目前流行的测试模型 接口测试的优越性 不同协议形式的测试 接口测试工作场景…

HTB靶机03-Shocker-WP

Shocker scan 2023-03-30 23:22 ┌──(xavier㉿xavier)-[~/Desktop/Inbox] └─$ sudo nmap -sSV -T4 -F 10.10.10.56 Starting Nmap 7.91 ( https://nmap.org ) at 2023-03-30 23:22 HKT Nmap scan report for 10.10.10.56 Host is up (0.40s latency). Not shown: 99 clos…

WindowsGUI自动化测试项目实战+辛酸过程+经验分享

WindowsGUI自动化测试项目实战辛酸过程经验分享 一、前言⚜ 起因⚜ 项目要求⚜ 预研过程⚜⚜ 框架选型⚜⚜ 关于UIaotumation框架 ⚜ 预研成果 二、项目介绍💓 测试对象💓 技术栈💓 项目框架说明 三、项目展示🤣 界面实现效果&…

Nuxt3 布局layouts和NuxtLayout的使用

Nuxt3是基于Vue3的一个开发框架,基于服务器端渲染SSR,可以更加方便的用于Vue的SEO优化。 用Nuxt3 SSR模式开发出来的网站,渲染和运行速度非常快,性能也非常高,而且可SEO。 接下来我主要给大家讲解下Nuxt3的layouts布…