算法--数据结构

这里写目录标题

  • 本节内容
  • 链表与邻接表
    • 链表
      • 主要思想
      • 链表操作
        • 初始化+在head结点后面插入
        • 普通插入
        • 删除操作
      • 例子
    • 双链表(双向循环链表)
      • 主要思想
      • 操作
        • 初始化+双向插入
        • 删除第k个点
    • 邻接表
      • 主要思想
  • 栈和队列
      • 主要思想
      • 主要操作
    • 队列
      • 主要思想
      • 操作
  • 单调栈与单调队列
    • 单调栈
      • 主要思想
      • 例题
    • 单调队列
      • 主要思想
      • 例题
    • 二级目录
    • 二级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录

本节内容

在这里插入图片描述

链表与邻接表

链表

主要思想

在这里插入图片描述
因为用真正的链表来写算法的话 会new很多东西 而new的过程是非常慢的

所以我们要用数组来写链表
如上图 链表分为单链表和双链表 单链表主要是邻接表 主要作用是存储图和树

e[]数组用来存储各个结点的val值 而ne[]数组用来存储各个结点的next指针 而表示在数组里就是存储下一个结点的数组下标
最后的空地址用-1表示
head表示指向头结点的指针 实际上就是头结点的下标

!!所有的结点都在e[]数组里 但是他们的排序不是按照e[]的下标按照顺序连续排序的 他们的排序是一个链表 存在ne[]数组里
e[k] 是指下标为k的e[]数组中的值 也就是在e[]数组中 下标为k的值
ne[k] 是指在e[]数组中下标为k的结点 下一个结点在e[]数组中的位置(下标)
在这里插入图片描述
同时会定义一个int变量idx 存储当前操作的点的下标 实质上发挥着指针的作用
他会指针一个e[]数组中 最新的可用的位置 用来新建一个结点

链表操作

初始化+在head结点后面插入

在这里插入图片描述
初始化就是将head改为-1 意思是head指向-1位置的空间 也就是空指针
然后idx可以更新为0 因为e[]数组中第一个可用位置就是下标为0的位置

插入
首先新建结点 e[idx]=x

之后next域指向头结点 ne[idx]=head
因为head存储的就是第一个数据的下标

之后将head指向新插入的结点 head=idx

最后idx后移 更新最新的可操作的位置的下标

普通插入

在这里插入图片描述
将x插入到下标是k的结点的后面

删除操作

在这里插入图片描述

在这里插入图片描述
注意中括号里就是存储的下标

!!所有的结点都在e[]数组里 但是他们的排序不是按照e[]的下标按照顺序连续排序的 他们的排序是一个链表 存在ne[]数组里
注意 k结点的下一个结点的下标不一定是k+1 而是ne[k] 这就是k结点的下一个结点在e[]数组中的下标

而e[]数组中的元素的位置排序 是按照生成的时间来排序的 因为生成一个结点就是在e[]数组中新建一个数据
比如 第k个插入的点 他的下标是k-1 这里说的就是在e[]数组中的下标

例子

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

在这里插入图片描述
注意光标所在行给了特判

双链表(双向循环链表)

主要思想

在这里插入图片描述
在单链表的基础上 加了两个指针域函数 一个是l[ ] 一个是r[ ]
在这里插入图片描述
因为是双向循环链表 可以让0号位置的空间是 头结点
1号位置是尾结点
这样的话 head的值就是0 tail(指向尾结点的指针)的值就是1

操作

初始化+双向插入

在这里插入图片描述
初始化 因为是循环链表 头结点和尾结点也是双向链接 所以 r[0]=1 l[1]=0;
同时 因为0 1 的位置被占用了 所以idx初始化是2

插入:
在下标为k的节点后面插入在这里插入图片描述
先新建结点 e[idx]=x
首先更新新节点的r 和 l
然后 更新两端结点的指针数组
先更新 右端点的 l[ ]数组 再更新左端点的 r[ ] 数组

不然如果先更新r 那么就找不到右端点的下标了 也就是找不到右端点了

在下标为k的点的左边插入
在这里插入图片描述
在k左边插入 实际上就是k的前一个结点的右边插入 所以改一下函数输入就行 add(l[k],x)

删除第k个点

在这里插入图片描述
将左边点的r 更新为 右边点的下标
将右边点的l 更新为 左边点的下标
在这里插入图片描述

邻接表

主要思想

在这里插入图片描述
就是将所有节点的邻节点用链表存了起来

栈和队列

主要思想

先进后出

主要操作

在这里插入图片描述
tt是栈顶指针 也就是栈顶下标 初始值为0(主要目的是好判断是不是空 因为初始化为0之后 一旦有元素插入 那么tt>0)

队列

主要思想

先进先出

操作

在这里插入图片描述
hh表示队头下标 tt表示队尾下标
tt初始化为-1)(这里不用再向栈一样用tt>0来判断是不是为空了 直接用hh<=tt 来判断是不是有元素 所以tt就可以初始化为-1 这样插入元素的时候 直接从下标0开始)
hh初始化为0
(不进行初始化 默认是0)

单调栈与单调队列

在这里插入图片描述

单调栈

主要思想

在这里插入图片描述
单调栈的题型:
在i的位置插入一个数x
找到在该序列中 左边离x最近的且小于x的数

单调栈 主要就是将一个序列 找到他的性质 将其单调化 如下:
在这里插入图片描述
我们可以把i左边的数全部加入栈中
然后 对该栈进行一些处理 把那些相对位置在左边的且较大的数弹出 这样 整个栈就变成了一个单调递增的栈 与新插入进来的数进行比较的时候就比较方便 (进行该步时 先暂时不考虑是否相等的问题 因为现在先处理的是研究点x放入之前的状态)

当x插入之后 将x栈顶元素(stk[tt])与x比较 当栈顶元素比x大的时候 就出栈(tt–) 直到找到某个元素小于x 这样即可

例题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用 cin.tie(0)
ios::sync_with_stdio(false)

可以使输入输出提高效率

单调队列

主要思想

在这里插入图片描述
从原序列中 找到一个性质 可以让序列变单调

例题

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

二级目录

二级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

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

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

相关文章

通用工作站设计方案 :807-ORI-S3R500 -多路PCIe3.0的单CPU通用工作站

ORI-S3R500 -多路PCIe3.0的单CPU通用工作站 (研华工业计算机IPC-610&#xff0c;IPC940 升级款) 一、机箱功能和技术指标&#xff1a; 系统 系统型号 ORI-SR500 主板支持 EEB(12*13)/CEB(12*10.5)/ATX(12*9.6)/Mi cro ATX 前置硬盘 最大支持2个3.5寸1个2.5寸SATA …

驱动基石之_tasklet中断下半部_工作队列_中断线程化处理

tasklet中断下半部 linux的中断分为两个部分&#xff1a; 1.中断上半部&#xff1a;在中断上半部期间&#xff0c;不允许被其他中断打断&#xff0c;直到中断上半部的服务函数执行完。 2.中断下半部&#xff1a;中断下半部&#xff0c;在执行中断下半部服务函数的期间&#xf…

10 个适用于 Windows 的最佳 PDF 编辑器,用于轻松编辑 PDF 文件

PDF 是当今最流行的文件格式之一。Adobe 于 1993 年开发了 PDF 文件格式。PDF&#xff08;便携式文档格式&#xff09;主要用于存储复杂的文本文档和电子书。PDF 文件包含固定的布局属性&#xff0c;并且可以存储大量文本和图形。PDF 文件格式主要用于分发大型文档。 使用 PDF…

【中间件篇-Redis缓存数据库03】Redis高级特性和应用(发布 订阅、Stream)

Redis高级特性和应用(发布 订阅、Stream) 发布和订阅 Redis提供了基于“发布/订阅”模式的消息机制&#xff0c;此种模式下&#xff0c;消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道( channel)发布消息&#xff0c;订阅该频道的每个客户端都可以收到该消息。 …

安卓常见设计模式3.2------工厂模式,工厂方法模式,抽象工厂模式对比(Kotlin版)

1. 都是创建型模式 工厂模式&#xff08;Factory Pattern&#xff09;、工厂方法模式&#xff08;Factory Method Pattern&#xff09;和抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;都是创建型设计模式&#xff0c;它们之间有以下区别&#xff1a; 工厂模式…

asp.net校园招聘管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 校园招聘管理系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发 应用技术&#xff1a;asp.net c#s…

HackTheBox-Starting Point--Tier 2---Base

文章目录 一 题目二 过程记录2.1 打点2.2 权限获取2.3 横向移动2.4 权限提升 一 题目 Tags Web、Vulnerability Assessment、Custom Applications、Source Code Analysis、Authentication、Apache、PHP、Reconnaissance、Web Site Structure Discovery、SUDO Exploitation、Au…

ubuntu18.04 通过创建服务实现开机自启, 启动指定脚本

下面是具体的操作过程 切换目录到root cd /root/ 新建一个脚本 vi myscript.sh 添加内容&#xff1a;设置指定网卡的ip地址 (这里根据自己需要修改) #!/bin/bash ifconfig enp0s3 10.20.60.113 赋予执行权限 chmod x myscript.sh 新建一个服务 vi /etc/systemd/system/myscr…

XOR Construction

思路&#xff1a; 通过题目可以得出结论 b1^b2a1 b2^b3a2 ....... bn-1^bnan-1 所以就可以得出 (b1^b2)^(b2^b3)a1^a2 b1^b3a1^a2 有因为当确定一个数的时候就可以通过异或得到其他所有的数&#xff0c;且题目所求的是一个n-1的全排列 那么求出a的前缀异或和arr之后…

原型制作神器ProtoPie的使用Unity与网页跨端交互

什么是ProtoPie&#xff1f; ProtoPie是一款面向设计师的软件原型设计工具&#xff0c;例如制作App界面交互展示&#xff0c;制作好的原型可以一键发布到Web服务器&#xff0c;就可以浏览器访问。由于其内置了大量常用交互类型&#xff0c;以及"程序化"模块&#xf…

【Redis】掌握篇--Redis与SSM进行整合

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Redis的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Redis与SSM的整合 1.添加Redis依赖 …

Go语言函数参数

文章目录 Go语言函数参数1. **函数参数的定义**&#xff1a;2. **参数的数量**&#xff1a;3. **参数的数据类型**&#xff1a;4. **参数的命名**&#xff1a;5. **参数的传递**&#xff1a;6. **参数的传递方式**&#xff1a;7. **空白标识符**&#xff1a; Go语言函数参数 在…

RabbitMQ Demo

1.首先安装RabbitMQ服务器&#xff0c;项目中添加RabbitMQ客户端库。以下是一个简单的示例&#xff0c;演示了如何在C#应用程序中发送和接收消息&#xff1a; using RabbitMQ.Client; using System; using System.Text;class Program {static void Main(){var factory new Co…

Pytorch实战教程(二十八)-交通标志识别

0. 前言 在道路交通场景中,交通标志识别作为驾驶辅助系统与无人驾驶车辆中不可缺少的技术,为车辆行驶中提供了安全保障。在道路上行驶的车辆,道路周围的环境包括许多重要的交通标志信息,根据交通标志信息在道路上做出正确的驾驶行为,通常能够避免发生交通事故。交通标志识…

QT 显示tablewidgit和查询mysql结果显示

QT实战3&#xff1a;QTableWidget表头、内容字体大小、颜色、背景颜色等设置_qt中tablewidget如何设置编辑状态为浅色-CSDN博客 Qt中MySQL的使用实例以及数据库遍历-CSDN博客

Scala爬虫实战:采集网易云音乐热门歌单数据

导言 网易云音乐是一个备受欢迎的音乐平台&#xff0c;汇集了丰富的音乐资源和热门歌单。这些歌单涵盖了各种音乐风格和主题&#xff0c;为音乐爱好者提供了一个探索和分享音乐的平台。然而&#xff0c;有时我们可能需要从网易云音乐上获取歌单数据&#xff0c;以进行音乐推荐…

vscode文件跳转(vue项目)

在 .vue 文件中&#xff0c;点击组件名打开 方式1&#xff1a; 在 vue 组件名上&#xff0c;桉住ctrl 鼠标左键 // 重新打开一个tab 方式2&#xff1a; 在 vue 组件名上&#xff0c;桉住ctrl shift 鼠标左键 // 在右侧拆分&#xff0c;并打开一个tab .vue文件的跳转 按住 …

Python TCP服务端多线程接收RFID网络读卡器上传数据

本示例使用设备介绍&#xff1a;WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) #python通过缩进来表示代码块&#xff0c;不可以随意更改每行前面的空白&#xff0c;否则程序会运行错误&#xff01;&#xff01;&#xff01;如果缩进不…

MATLAB|风玫瑰图

目录 扫一扫关注公众号 效果图 粉丝给的图&#xff1a; 复刻的图&#xff1a; 其他样式效果&#xff1a; 数据 绘图教程 绘制左边Y轴 绘制主、次网格和主、次刻度的极坐标区域。 添加刮风数据&#xff0c;添加数据和颜色、图列大小映射关系。 颜色条绘制​​​​​​…

虹科示波器 | 汽车免拆检测 | 2017款路虎发现车行驶中发动机抖动且加速无力

一、故障现象 一辆2017款路虎发现车&#xff0c;搭载3.0L发动机&#xff0c;累计行驶里程约为3.8万km。车主反映&#xff0c;车辆在行驶过程中突然出现发动机抖动且加速无力的现象&#xff0c;于是请求拖车救援。 二、故障诊断 拖车到店后首先试车&#xff0c;发动机怠速轻微抖…