线性数据结构

1.数组

数组使用一块连续的内存来存储元素,并且元素的类型都是相同的。可以通过索引来访问。

2.链表

链表由一系列节点组成,每个节点包含两部分:数据部分和指针部分。数据部分用于存储元素的值,指针部分则指向下一个节点。没有使用连续的内存空间来存储数据。

在知道目标位置元素的上一个元素的时候,链表的插入和删除操作的复杂度为 O(1) 。但是,在查找一个节点或者访问特定位置的节点的时候复杂度为 O(n) 。

常见链表有:单链表、双向链表、循环链表、双向循环链表

单链表

单链表只有一个方向,结点只有一个后继指针 next 指向后面的节点。因此,链表这种数据结构通常在物理内存上是不连续的。我们习惯性地把第一个结点叫作头结点,链表通常有一个不保存任何值的 head 节点,通过头结点我们可以遍历整个链表。尾结点通常指向 null。

循环链表

循环链表其实是一种特殊的单链表,和单链表不同的是循环链表的尾结点不是指向 null,而是指向链表的头结点。

双向链表

双向链表包含两个指针,一个 prev 指向前一个节点,一个 next 指向后一个节点。

双向循环链表

双向循环链表最后一个节点的 next 指向 head,而 head 的 prev 指向最后一个节点,构成一个环。

3.栈

栈 (Stack) 只允许在有序的线性数据集合的一端(称为栈顶 top)进行元素的添加(push)和删除(pop)。因而按照后进先出(LIFO,Last In First Out)的原理运作。在栈中,push 和 pop 的操作都发生在栈顶。

栈常用一维数组或链表来实现,用数组实现的栈叫作 顺序栈 ,用链表实现的栈叫作 链式栈

4.队列

队列是先进先出 (FIFO,First In, First Out) 的线性表。在具体应用中通常用链表或者数组来实现,用数组实现的队列叫作顺序队列 ,用链表实现的队列叫作链式队列。队列只允许在队尾进行插入操作,在队首进行出队。

单队列

单队列就是常见的队列, 每次添加元素时,都是添加到队尾。单队列又分为顺序队列(数组实现)和链式队列(链表实现)。

循环队列

循环队列在逻辑上是一个循环的队列,可以利用数组实现。循环队列解决了普通队列在出队操作时导致的队列空间浪费的问题。

双端队列

双端队列是一种在队列的两端都可以进行插入和删除操作的队列,相比单队列来说更加灵活。

优先队列

优先队列从底层结构上来讲并非线性的数据结构,它一般是由堆来实现的。在入队和出队时有以下特点。

  • 在每个元素入队时,优先队列会将新元素插入堆中并调整堆。

  • 在队头出队时,优先队列会返回堆顶元素并调整堆。

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

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

相关文章

真·面试题总结——JVM虚拟机

JVM虚拟机 JVM虚拟机规范与实现 JVM虚拟机规范 JVM虚拟机实现 JVM的常见实现 JVM虚拟机物理架构 JVM虚拟机的运转流程 JVM类加载过程 JVM类加载器及类加载器类型 JVM类加载器双亲委派机制 JVM运行时数据区的内存模型 JVM运行时数据区的内存模型:程序计数器…

【JavaScript】函数 ③ ( 形参 与 实参 匹配问题 | 实参个数 = 形参个数 | 实参个数 > 形参个数 | 实参个数 < 形参个数 )

文章目录 一、JavaScript 函数 形参 与 实参 匹配问题1、函数形参与实参不匹配问题2、形参与实参个数匹配3、实参个数 > 形参个数4、实参个数 < 形参个数5、完整代码示例 一、JavaScript 函数 形参 与 实参 匹配问题 1、函数形参与实参不匹配问题 在 其它语言 中 , 如 Ja…

【面试题】spring 事务在哪些情况下会失效?

以下几种情况&#xff0c;会造成事务失效 直接new出来的对象添加事务不起作用&#xff0c;因为只有spring定义的bean才接受事务。 由于mysql的引擎用Myisam不支持事务&#xff0c;所以如果使用mysql的myisam引擎的话&#xff0c;事务不起作用。 如果Transaction注解到非publi…

ABAP 时间函数-F4

屏幕时间函数 操作 1.屏幕字段属性设置&#xff0c;如图: 2.代码: DATA L_TIME TYPE SY-UZEIT. CALL FUNCTION F4_CLOCK EXPORTING START_TIME SY-UZEIT DISPLAY IMPORTING SELECTED_TIME L_TIME.

h5 笔记1

Internet是InternationalNetwork的缩写&#xff0c;又称“因特网”。它是将全世界数以千计的上网设备通过TCP/IP通信协议连接在一起。Internet上的服务众多&#xff0c;主要的服务有WWW(万维网)、E-Mail(电子邮件)、FTP(FileTransferProtocol&#xff0c;文件传输协议)、Telnet…

PEFT-LISA

LISA是LoRA的简化版&#xff0c;但其抓住了LoRA微调的核心&#xff0c;即LoRA侧重更新LLM的底层embedding和顶层head。 根据上述现象&#xff0c;LISA提出两点改进&#xff1a; 始终更新LLM的底层embedding和顶层head随机更新中间层的hidden state 实验结果 显存占用 毕竟模型…

【C++】二分查找算法(模板)

重点 只需要记住两点&#xff1a; 1.left right 时&#xff0c;一定就是最终结果&#xff08;包括找不到目标值&#xff09;&#xff0c;无需再次判断&#xff0c;如果判断就会死循环 2.求中点如果是求左端点 mid left (right - left)/2 如果是求右端点 mid left (right -…

最新版两款不同版SEO超级外链工具PHP源码

可根据个人感觉喜好自行任意选择不同版本使用&#xff08;版V1或版V2&#xff09; 请将zip文件全部解压缩即可访问&#xff01; 源码全部开源&#xff0c;支持上传二级目录访问 已更新增加大量高质量外链&#xff08;若需要增加修改其他外链请打开txt文件&#xff09;修复优…

图解深度神经网络的架构

图解深度神经网络的架构 基线模型 AlexNet 是突破性的架构&#xff0c;它使卷积网络&#xff08;CNN&#xff09;成为处理大型图像分类任务的主要机器学习算法。介绍 AlexNet 的论文呈现了一张很好的图&#xff0c;但是好像还缺点什么…… AlexNet 架构图示&#xff08;图源&…

AWS-EKS 给其他IAM赋予集群管理权限

AWS EKS 设计了权限管理系统&#xff0c;A用户创建的集群 B用户是看不到并且不能管理和使用kubectl的&#xff0c;所以我们需要共同管理集群时就需要操场共享集群访问给其他IAM用户。 两种方式添加集群控制权限&#xff08;前提&#xff1a;使用有管理权限的用户操作&#xff…

MQ消息队列详解以及MQ重复消费问题

MQ消息队列详解以及MQ重复消费问题 1、解耦2、异步调用3、流量削峰4、MQ重复消费问题&#xff0c;以及怎么解决&#xff1f;4.1、重复消费产生4.2、解决方法&#xff1a; https://blog.csdn.net/qq_44240587/article/details/104630567 核心的就是&#xff1a;解耦、异步、削锋…

Web CSS笔记3

一、边框弧度 使用它你就可以制作盒子边框圆角 border-radius&#xff1a;1个值四个圆角值相同2个值 第一个值为左上角与右下角&#xff0c;第二个值为右上角与左下角3个值第一个值为左上角, 第二个值为右上角和左下角&#xff0c;第三个值为右下角4个值 左上角&#xff0c;右…

【Java初阶(八)】String类

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; 目录 1.前言2.常用方法2.1字符串构造2.2 String对象的比较2.3转换2.4字符串拆分2.5字符串截取 3.字符串的不可变性3.1字符串修改3.2 StringBuilder和StringB…

Golang学习系列1-pprof性能调优

1. pprof 简述 一位亦师亦友的话让我记忆犹新&#xff0c;他说“学习一个新事务&#xff0c;应该从三个方面入手what,why,how;且三者的重要程度应该是递减”。所以在本文的第一部分先叙述下pprof的what & why。 1.1 What&#xff1f; pprof是golang自身提供的一种性能分…

QT中的摄像头显示与拍照

一、思路 1.1 摄像头图像捕捉 QT中摄像头的使用首先想到的是Camera&#xff0c;在帮助手册里面查询可以看到QCamera的类。 添加对应的模块multimedia与类<QCamera>&#xff0c;然后查看QCamera的使用。 有详细的例子&#xff0c;例子中能发现新的类型QCameraInfo&#…

nacos的安装

一、Nacos的下载与安装 1、下载地址和版本 下载地址&#xff1a;github.com/alibaba/nacos 下载版本&#xff1a;nacos-server-1.1.0.tar.gz或nacos-server-1.1.0.zip&#xff0c;解压任意目录即可 2、nacos的启动 Linux/Unix/Mac 启动命令&#xff1a;sh startup.sh -m s…

MYSQL-7.内存

内存 Mysql的内存结构 大体可分为四个板块&#xff1a;mysql工作组件、线程本地内存、mysql共享内存、存储引擎缓冲区&#xff1b; Mysql server工作组件 对应着mysql架构图中的组件层&#xff1a; Mysql在启动时&#xff0c;会将这些工作组件初始化到内存中&#xff1b; …

比selenium体验更好的ui自动化测试工具: cypress介绍

话说 Cypress is a next generation front end testing tool built for the modern web. And Cypress can test anything that runs in a browser.Cypress consists of a free, open source, locally installed Test Runner and a Dashboard Service for recording your tests.…

LinuxWindows 日志分析 陇剑杯

sql注入分析 题目 access.logsql注入分析1 小明的网站被人注入了&#xff0c;还好有日志&#xff0c;请你帮他分析分析&#xff0c;利用附件回答sql注入分析1-3 sql注入分析-1&#xff1a; 黑客在注入过程中采用的注入手法叫_____________。&#xff08;格式为4个汉字&…

【资讯】Linux 2024-03-10 发布 V6.8 版本--Git对象即将超过1000万

关键信息&#xff1a; 发布时间&#xff1a;2024-03-10 13:38:09 -0700发布Tag名&#xff1a;v6.8Tag链接&#xff1a;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tag/?hv6.8邮件列表&#xff1a;https://lkml.org/lkml/2024/3/10/243 发布链接快照…