栈,队列
栈(Stack)和队列(Queue)是两种常用的数据结构,它们在计算机科学中有着广泛的应用。它们的主要区别在于元素的添加和移除方式。
栈(Stack):
- 栈是一种后进先出(Last In First Out, LIFO)的数据结构。
- 栈只允许在一端(称为栈顶)进行添加(push)和移除(pop)操作。
- 最后被添加到栈中的元素将是第一个被移除的元素。
- 栈的两个主要操作是:
- push:将一个元素添加到栈顶。
- pop:移除栈顶的元素,并返回它。
- 栈的其他操作可能包括:
- peek:查看栈顶的元素但不移除它。
- is_empty:检查栈是否为空。
- 栈在表达式求值、函数调用、撤销/重做功能等方面有广泛应用。
队列(Queue):
- 队列是一种先进先出(First In First Out, FIFO)的数据结构。
- 队列允许在一端(称为队尾)添加元素,在另一端(称为队首)移除元素。
- 最先被添加到队列中的元素将是第一个被移除的元素。
- 队列的两个主要操作是:
- push:在队尾添加一个元素。
- pop:移除队首的元素,并返回它。
- 队列的其他操作可能包括:
- front:查看队首的元素但不移除它。
- is_empty:检查队列是否为空。
- 队列在任务调度、缓冲处理、广度优先搜索算法等方面有广泛应用。
用链表实现栈和队列是一种常见的做法,因为链表的动态性质非常适合这些数据结构的插入和删除操作。下面是如何使用链表来实现栈和队列的简述:
用链表实现栈
- 定义节点:首先定义一个链表节点,通常包含数据部分和指向下一个节点的指针。
- 初始化栈:创建一个指向链表头部的指针,初始时指向
null,表示栈为空。 - Push操作:添加元素到栈顶。创建一个新节点,将其数据部分设置为要添加的值,然后将新节点的指针指向当前的栈顶节点,最后更新栈顶指针为新节点。
- Pop操作:移除栈顶元素。首先检查栈是否为空,如果不为空,保存栈顶节点的数据,然后将栈顶指针移动到下一个节点,最后释放原栈顶节点的内存。
- get_top操作:查看栈顶元素。检查栈是否为空,如果不为空,返回栈顶节点的数据,但不移除它。
用链表实现队列
- 定义节点:与栈类似,定义一个链表节点,包含数据部分和指向下一个节点的指针。
- 初始化队列:创建两个指针,一个指向队首(front),一个指向队尾(rear),初始时都指向
null,表示队列为空。 - push操作:在队尾添加元素。创建一个新节点,将其数据部分设置为要添加的值,然后将新节点的指针设置为
null。如果队列为空,新节点既是队首也是队尾。否则,将队尾节点的指针指向新节点,然后更新队尾指针为新节点。 - pop操作:从队首移除元素。首先检查队列是否为空,如果不为空,保存队首节点的数据,然后将队首指针移动到下一个节点,最后释放原队首节点的内存。如果队首和队尾指针相同,表示队列中只有一个元素,移除后队列变为空,需要将队尾指针也设置为
null。 - getFront操作:查看队首元素。检查队列是否为空,如果不为空,返回队首节点的数据,但不移除它。
相关文章:
栈,队列
栈(Stack)和队列(Queue)是两种常用的数据结构,它们在计算机科学中有着广泛的应用。它们的主要区别在于元素的添加和移除方式。 栈(Stack): 栈是一种后进先出(Last In F…...
新增一个数组传递给后端
实现的效果: 页面 <div style"margin-bottom: 10px" v-if"totalPrice"><p style"font-weight: bolder;margin-bottom: 10px">支付计划<el-button type"text" size"small" click"addPayInf…...
Flutter集成Firebase中的Realtime Analytics
实时分析(Realtime Analytics)的功能 实时数据更新:Firebase实时分析提供实时数据更新,让开发者可以实时了解应用程序的使用情况,包括活跃用户数量、事件触发次数等指标自定义事件跟踪:开发者可以通过自定…...
2024国赛数学建模A题B题C题D题E题思路资料模型
开始在本帖实时更新2024国赛数学建模赛题思路代码,文章末尾获取! 持续更新参考思路...
C语言字面量和常量
目录 引言 1. 字面量 1.1 字符字面量 1.2 整型字面量 1.3 浮点字面量 2. 常量 2.1 使用预处理器指令 #define 定义常量 2.1.1 语法格式 2.1.2 使用举例 2.2 使用 const 关键字定义常量 2.3 使用 #define 和 const 定义常量的区别 引言 看了一些博文,有的文…...
视频结构化从入门到精通——行为分析类应用
行为分析类应用 1. 认识行为分析 监控/判断视频画面中目标的运动过程、携带属性等。从数据中自动识别、跟踪和理解人类或物体行为。 1. 车的行为分析应用 车辆行为分析主要用于监控和管理车辆的动态行为,广泛应用于智能交通、城市管理和安全监控。关键应用包括&…...
Redis的KeyExpirationEventMessageListener键过期监听器
MessageListener通过监听key过期的Redis keyspace通知,然后通过ApplicationEventPublisher发布RedisKeyExpiredEvent事件的模式进行事件监听和广播。 redis.conf地址:https://github.com/redis/redis/blob/unstable/redis.conf Redis官方地址࿱…...
MP4视频压缩,推荐这五大压缩操作
MP4视频压缩,在当今数字化的时代,视频已经成为我们日常生活和工作中不可或缺的一部分。然而,随着视频分辨率和长度的增加,MP4文件的大小也变得越来越大,这不仅占用了大量的存储空间,还使得传输和分享变得困…...
docker 安装NextERP
有很多方式: 一 docker sudo docker run -itd -p 8016:80 -v ERPNext_db:/var/lib/mysql -v ERPNext_sites:/home/frappe/frappe-bench/sites --name ERPNext lvxj11/erpnext:latest二 git clone https://e.coding.net/yuanerp/yuanerp/frappe_docker.gitcp exa…...
Android 存储之 SharedPreferences 框架体系编码模板
一、SharedPreferences 框架体系 1、SharedPreferences 基本介绍 SharedPreferences 是 Android 的一个轻量级存储工具,它采用 key - value 的键值对方式进行存储 它允许保存和读取应用中的基本数据类型,例如,String、int、float、boolean …...
弹性容器Flex中的自动外边距(Auto Margins) 的作用
最近在使用Flex布局时,遇到的一个情况: 有以下的代码: <div class"toolbox"><button id"decrease">-</button><span id"size">1</span><button id"increase">…...
C语言调用子函数时入/出栈(保护/恢复现场)全过程分析:以Cortex-M3为例
0 参考资料&工具 Cortex M3权威指南(中文).pdf keil5(用于仿真查看寄存器、栈变化)1 C语言调用子函数时出入/出栈(保护/恢复现场)全过程分析 使用C语言调用子函数是如何保护/恢复现场的呢?本文以Cortex-M3为例&a…...
理解Sigmoid激活函数原理和实现
Sigmoid 激活函数是一种广泛应用于机器学习和深度学习中的非线性函数,特别是在二分类问题中。它的作用是将一个实数值映射到(0, 1)区间,使得输出可以被解释为概率值,这在处理二分类问题时非常有用。 Sigmoid 函数的定义 Sigmoid 函数的数学…...
探秘DevSecOps黄金管道,安全与效率的完美融合
软件应用的安全性已成为企业和用户关注的焦点,DevSecOps作为一种将安全融入开发和运维全过程的理念和实践,旨在消除传统开发模式中安全被后置处理的弊端。DevSecOps黄金管道(Golden Pipeline)是实现这一理念的核心框架,…...
Redis的内存淘汰策略- volatile-lru
volatile-lru 策略简介 在 volatile-lru 策略下,当 Redis 的内存使用达到配置的上限(maxmemory)时,它会优先删除那些设置了过期时间的键,并且选择最近最少使用的键进行删除。LRU 算法的核心思想是,优先删除…...
HTTP和HTTPS的区别?哪一个更适合你的网站?
什么是 HTTP? HTTP(超文本传输协议)(Hypertext Transfer Protocol)它是一组允许网络浏览器与网络服务器(托管网站的计算机)进行通信的规则。 HTTP 使用请求-响应模型。 例如,当你…...
OpenAI SORA团队负责人 通往智能的方式 报告笔记
OpenAI SORA团队负责人 通往智能的方式 报告笔记 这个报告其实是2024年智源大会的主旨报告,OpenAI SORA和DALL-E团队负责人Aditya Ramesh给出的一段有关多模态大模型的报告。我去听了现场,感觉倍受启发,但是感觉很多并不能当场理解ÿ…...
006-Sleuth(Micrometer)+ZipKin分布式链路追踪
这里写目录标题 1 分布式链路追踪概述1.1 为什么会出现这个技术?需要解决哪些问题?1.2 在分布式与微服务场景下需要解决的问题 2 新一代Spring Cloud Sleuth:Micrometer2.1 官网重要提示2.1.1 新一代Sleuth2.1.2 官网2.1.3 说明2.1.3.1 老项目…...
AI模型:追求全能还是专精?-- 之6 语言复杂度类别(Category 0~3 类)和语言功能性类型(Type 0~Ⅲ 型)之2
Q17、我前面说过,语言复杂度的0~3级(Category 0~3)表示了语言的的上下文相关性 : 完全不相关, 单相关的 单词上下文, 双相关的句子上下文 全相关的文章上下文 。我准备翻译为 Context - irrelative /relati…...
20240907 每日AI必读资讯
大疆发布 DJI Neo 掌上 Vlog 无人机! - DJI Neo 是 DJI 迄今最轻、最小的无人机,无需遥控器,掌上起降即可轻松拍出主角大片… |135 克轻巧便携 丨零门槛掌上起降 丨AI 智能跟拍 ,一键成片 丨多种操控,丰富…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
