寒假训练 第二节 数据结构基础 总结

2023-11-19

数组

定义

语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,
但它往往被认为是一系列相同类型的变量。

所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。
数组中的特定元素可以通过索引访问,第一个索引值为 0。
在这里插入图片描述
数组的大小一旦定义就无法改变,对数组进行增删改查都需要移动大量的元素,数组的空间利用率比较大,常用来存储不需要变动的数据。

vector 数组

它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因
为它能够像容器一样存放各种类型的对象,简单地说, vector是一个能够存放任意类型的动态数组,能够增加
和压缩数据。

定义

设有一个栈 S=(a1,a2,an),栈中无素按a1,a2,…,an的次序进栈,按an, …a2,a1 的顺序出栈。进栈的第一个的弟元素an为栈底元素,出栈的第一个元素an栈顶元素。这种后进先出的线性结构称为栈。栈的操作是按照“后进先出”的原则进行的。
                                                        、、

顺序栈

定义

栈的顺序存储结构称为顺序栈。类似于顺序表的类型定义,顺序栈是用一个预设的足够长度的一维数组和一个记录站顶元位置的变量来实现。

差不多就是一个限定输入输出的数组。

链表

定义

用链式存储结构实现的栈为链栈,链栈与不带头结点单链表组织形式相似,因为栈的主要操作是第是在栈顶进行插入与删除操作,显然将链表的第一个结点作为栈顶是最方便的。因此,没有必要如单链表那样为了操作方便附加一个头结点,通常链栈表示如图

在这里插入图片描述

队列

定义

假设有一个队列Q= {a1,a2,… an},对列中元素按a1,a2,a3,的次序入队后,入队的第一个元素a1为队头元素,最后一个元素an为对尾,队列的操作是先进先出的原则进行的。这种先进先出的规则应用在数据结构中称为对列。
在这里插入图片描述

特性

1.对列的主要特性就是“先进先出”
2.对列也是一种特殊的线性表

顺序队列

定义

队列的顺序存储结构称为顺序队列。类似于顺序表的类型定义,顺队列用一个一维数组和两个分别指向对头对尾元素变量来实现。

通常情况下,队列中的几种状态,顺序队列存在假溢出现象。
在这里插入图片描述

循环队列

定义

将顺序存储队列的元素的一维数组首尾相接,形成一个环状,这种环状的队列称为虚循环队列。

循环队列解决了顺序队列的“假溢出”现象,但新的问题出现了,队满的条件不再是rear==MAXSIZE-1,而是front=rear和队空的条件相同了。
在这里插入图片描述

链表

定义

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

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

链表与顺序表不同,它是一种动态管理的存储结构,链表中的每个结点占用的存储空间不是预先分配,而是运行时系统根据需求生成的。因此,建立在初始化链表后,建立线性链表从空表开始,每读入有效的数据则申请一个结点s,并将读取的数据存放到新结点s的数据域中,然后将新结点插入到当前链表head的表头上,直到循环结束为止。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

寒假训练 第二节 数据结构基础 总结 的相关文章

随机推荐

  • 使用cloudflare+wzfou为自己的网站配置CDN加速

    本文同步于个人博客 蝴蝶飞不过沧海 Blog 本文链接 泛播 Cloudflare 挖站否 Wzfou 为什么用到挖站否 单独泛播不就可以作cdn加速吗 众所周知泛播 cloudflare 国外知名免费cdn服务商无需网站备案 但有个缺点就
  • Latex安装教程

    Latex安装教程 TeXLive TeXstudio 1 TeXLive安装 2 TeXstudio安装 TeXLive和TeXstudio的安装包 链接 https pan baidu com s 17rgbGKE9t7oKd FePo
  • MOOC PTA 08-图8 How Long Does It Take

    http pta patest cn pta test 18 exam 4 question 631 构建图的邻接矩阵 寻找入度为0的顶点 将其压入队列 出队列时对其相连接的顶点入度减1 更新每个顶点的最大时间 刚开始提交 3和5 测试点过
  • C#笔记7——发送电子邮件C#笔记8——多功能电子邮件发送程序实例

    C 笔记7 发送电子邮件 最近用C 测试了一下发邮件功能 用QQ邮件服务器发送邮件 亲测代码如下 for send mail using System Net Mail using System Net using System Threa
  • 使用Vue3自定义指令,让你的应用更具交互性

    个人网站 紫陌 笔记分享网 想寻找共同学习交流 共同成长的伙伴 请点击 前端学习交流群 1 认识自定义指令 在Vue的模板语法中我们学习过各种各样的指令 v show v for v model等等 除了使用这些指令之外 Vue 也允许我们
  • 永磁同步电机矢量控制(二)——控制原理与坐标变换推导

    2 永磁同步电机控制原理 2 1 从PMSM电机的数学模型出发 dq 轴 电压方程 dq 轴 轴磁链方程 dq 轴 转矩方程 dq 轴 运动方程 分析上述方程 如果我们能够控制 id 0 那么电压方程就可简化为 转矩方程为 运动方程为 以上
  • string (std::string)转换为QString的用法(含中文)

    string s 123 QString str QString fromStdString s 含中文时的转换 std string str 你好世界 QString Name QString fromLocal8Bit str c st
  • redis配置认证密码

    redis配置密码 1 通过配置文件进行配置 yum方式安装的redis配置文件通常在 etc redis conf中 打开配置文件找到 requirepass foobared去掉行前的注释 并修改密码为所需的密码 保存文件 requir
  • 2-数据结构-线性表之顺序表的动态分配

    说明 由于原来顺序表的静态分配 浪费空间 且存在溢出现象 因此采取动态分配的方式 创建顺序表中的数组 跟C语言正常动态分配一样 需要直到扩充的大小 和数组指针即可 代码如下 看着多 其实原理差不多 主要知道哪些操作即可 无需了解具体代码 i
  • 基于深度学习的文本分类系统(完整代码+数据)bert+rnn textcnn fastcnn bert

    程序说明 硬件 GPU Tesla V100 32GB显存 内存 32GB
  • OpenFace库(Tadas Baltrusaitis)中基于HOG进行正脸人脸检测的测试代码

    Tadas Baltrusaitis的OpenFace是一个开源的面部行为分析工具 它的源码可以从https github com TadasBaltrusaitis OpenFace下载 OpenFace主要包括面部关键点检测 facia
  • 计算机毕业设计项目大全

    文章目录 0 前言 1 java web 管理系统 毕设选题 2 java web 平台 业务系统 毕设选题 3 游戏设计 动画设计类 毕设选题 适合数媒的同学 4 算法开发 5 数据挖掘 毕设选题 6 大数据处理 云计算 区块链 毕设选题
  • 美化github首页

    创建仓库 注 新建仓库的名字要和自己的名字完全一致 提交的源码必须在主分支上 master或者main 配置完成 回到你的主页 你就能看到在置顶项目的上方多了一个README md 编辑改文件即可 美化首页源码 1 github概览数据 G
  • 若依框架中@DataScope数据权限注解的使用与自定义sql语句。

    介绍 若依框架本身具有角色 部门 用户业务 在业务中 用户必须绑定一个角色 而角色又必须将自身绑定到部门 角色绑定了哪些部门 就决定着隶属于该角色的用户能对哪些部门数据进行增删改 那么 怎么实现让用户只能遵循其绑定角色所指定的部门 来进行数
  • 分布式CAP定理,为什么不能同时满足三个特性?

    在弄清楚这个问题之前 我们先了解一下什么是分布式的CAP定理 根据百度百科的定义 CAP定理又称CAP原则 指的是在一个分布式系统中 Consistency 一致性 Availability 可用性 Partition tolerance
  • linux rhel6 nvidia 卡 在启动界面,RHEL6上安装Nvidia显卡驱动

    二 在字符界面下 运行级3 运行驱动安装程序 在RHEL6上因为Nouveau的关系会出现下面的错误 因此需要将该模块禁用掉 root rhel6 sh NVIDIA Linux x86 64 275 09 07 run Verifying
  • 如何编译SQLite-How To Compile SQLite

    SQLite是ANSI C的源代码 在使用之前必须要编译成机器码 这篇文章是用于各种编译SQLite方法的指南 这篇文章不包含编译SQLite的每个步骤的反馈 那样可能会困难因为每种开发场景都不同 所以这篇文章描述和阐述了编译Sqlite的
  • 区块链应用开发(智能合约的开发和WeBASE合约IDE的使用)

    文章目录 四 智能合约的开发和WeBASE合约IDE的使用 一 实验概述 二 实验目标 三 实验环境及建议 四 实验步骤 4 1 启动Webase 4 2 智能合约开发 4 2 1 合约功能设计 4 2 2 存证合约开发 4 2 3 工厂合
  • 浅析赋值、浅拷贝、深拷贝的区别

    1 原理 赋值 将某一对象赋给某个变量的过程 称为赋值 浅拷贝 浅拷贝是创建一个对象 这个对象有着原始对象属性值的一份精准拷贝 如果属性是基本类型 拷贝的就是基本类型的值 如果属性是引用类型 拷贝的就是内存地址 如果其中一个对象改变了这个地
  • 寒假训练 第二节 数据结构基础 总结

    数组 定义 语言支持数组数据结构 它可以存储一个固定大小的相同类型元素的顺序集合 数组是用来存储一系列数据 但它往往被认为是一系列相同类型的变量 所有的数组都是由连续的内存位置组成 最低的地址对应第一个元素 最高的地址对应最后一个元素 数组