学习数据结构(9)栈和队列上
1.栈的概念
栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作 的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出(先进先出)的原则
栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶,栈的删除操作叫做出栈,出数据也在栈顶
栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些,因为数组在尾上插入数据的代价比较小
2.栈的实现

(1)初始化栈


(2)销毁栈


(3)判空

(4)入栈


(5)出栈


(6)取栈顶元素

(7)获取栈中有效元素个数


3.关于栈的算法题


解法一(参考解法):遍历字符串,遇到左括号则入栈,遇到右括号时,判断栈是否为空,是则,销毁栈,直接返回false,不是则取栈顶数据,判断栈顶数据是否与右括号相对应,是则将栈顶数据出栈,不是则销毁栈,直接返回false,循环结束,判断栈是否为空,为空则说明括号全部配对,返回true,不为空则只有一种可能:栈中有未配对的左括号,返回false



4.队列的概念
队列是只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点,进行插入操作的一端称为队尾,进行删除操作的一端称为队头
队列也可以用数组和链表的结构实现,使用链表的结构实现更优,因为如果使用数组的结构,出队列就在数组头上出数据,效率会比较低
5.队列的实现

(1)初始化队列


(2)队列判空

(3)入队列


(4)出队列


(5)销毁队列


(6)取队头元素

(7)取队尾元素

(8)队列有效元素个数

相关文章:
学习数据结构(9)栈和队列上
1.栈的概念 栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作 的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出(先进先出)的原则 栈的插入操作叫做进栈/压栈/入栈ÿ…...
【git-hub项目:YOLOs-CPP】本地实现03:跑自己的实例分割模型
本节博客,我们继续讲解,如何在cpu+windows上,跑通自己的实例分割模型。 目录 模型 类别名称 量化 导出模型 拉取最新代码 进入官网ultralytics 模型 该项目包括存储在 models 和 quantized_models 目录中的各种预训练标准 YOLO 模型: 模型类型模型名称标准模型yolo5…...
MySQL和SQL server的区别
在当今数据驱动的世界里,数据库技术的选择对于企业和个人开发者来说至关重要。MySQL 和 SQL Server 是两个广泛使用的数据库管理系统(DBMS),它们各自拥有独特的优势和适用场景。本文将深入探讨这两个数据库系统之间的区别…...
C#运动控制——轴IO映射
1、IO映射的作用 该功能允许用户对专用 IO 信号的硬件输入接口进行任意配置,比如轴的急停信号,通过映射以后,可以将所有轴的急停信号映射到某一个IO输入口上,这样,我们只要让一个IO信号有效就可以触发所有轴的急停。 进…...
DeepSeek官方发布R1模型推荐设置
今年以来,DeepSeek便在AI领域独占鳌头,热度一骑绝尘。其官方App更是创造了惊人纪录,成为史上最快突破3000万日活的应用,这一成绩无疑彰显了它在大众中的超高人气与强大吸引力。一时间,各大AI及云服务厂商纷纷投身其中&…...
DeepSeek教unity------MessagePack-03
数据契约兼容性 你可以使用 [DataContract] 注解代替 [MessagePackObject]。如果类型用 DataContract 进行注解,可以使用 [DataMember] 注解代替 [Key],并使用 [IgnoreDataMember] 代替 [IgnoreMember]。 然后,[DataMember(Order int)] 的…...
《安富莱嵌入式周报》第350期:Google开源Pebble智能手表,开源模块化机器人平台,开源万用表,支持10GHz HRTIM的单片机,开源CNC控制器
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1YPKEeyEeM/ 《安富莱嵌入式周报》第350期:Google开…...
img标签的title和alt
img标签的title和alt 显示上 title:鼠标移入到图片上时候显示的内容; alt:图片无法加载时候显示的内容; <div class"box"><div><!-- title --><h3>title</h3><img src"./image/poster.jpg" title"这是封…...
MambaMorph brain MR-CT
loss代码实现了几种用于医学图像配准(Registration)和分割(Segmentation)任务的损失函数,主要包括以下几种: NCC (Normalized Cross-Correlation): 功能: 计算局部归一化互相关损失,用于衡量两个图像之间的相似性。 应用场景: 通常用于图像配准任务,通过最大化图像之间…...
小米 R3G 路由器(Pandavan)实现网络打印机功能
小米 R3G 路由器(Pandavan)实现网络打印机功能 一、前言 家中有多台 PC 设备需要打印服务,但苦于家中的 Epson L380 打印机没有网络打印功能,并且配置 Windows 共享打印机实在是过于繁琐且需要共享机保持唤醒状态过于费电。想到…...
Python PyCharm DeepSeek接入
Python PyCharm DeepSeek接入 创建API key 首先进入DeepSeek官网,https://www.deepseek.com/ 点击左侧“API Keys”,创建API key,输出名称为“AI” 点击“创建",将API key保存,复制在其它地方。 在PyCharm中下载Continue插件 安装 下载中 下载完成后,点击OK 配…...
【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第二十节】
ISO 14229-1:2023 UDS诊断服务测试用例全解析(WriteMemoryByAddress_0x3D服务) 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS协议、0x3D服务、内存写入、ISO 14229-1:2023、ECU测试 一、服务功能概述…...
jemalloc 5.3.0的base模块的源码及调用链使用场景的详细分析
一、背景 这篇博客,我们继续之前的 由jemalloc 5.3.0初始化时的内存分配的分析引入jemalloc的三个关键概念及可借鉴的高性能编码技巧-CSDN博客 博客里对初始化分配逻辑进行分析,已经涉及到了jemalloc 5.3.0里的非常重要的base模块的一部分逻辑ÿ…...
ThreadLocal源码分析
文章目录 1.核心数据结构 ThreadLocalMap1.静态内部类 Entry2.真正存储数据的是table数组 2.ThreadLocal.set()方法源码详解1.set2.getMap3.ThreadLocalMap.set4.createMap5.rehash6.resize 3.ThreadLocalMap.get()详解1.get2.ThreadLocalMap.getEntry3.getEntryAfterMiss 4.Th…...
Python爬虫实战:获取笔趣阁图书信息,并做数据分析
注意:以下内容仅供技术研究,请遵守目标网站的robots.txt规定,控制请求频率避免对目标服务器造成过大压力! 1. 环境准备与反爬策略 python import requests from bs4 import BeautifulSoup import pandas as pd import re import time import random from fake_useragent …...
如何在Java EE中使用标签库?
在Java EE(现在称为Jakarta EE)中使用标签库(Tag Library),主要是通过JSP标准标签库(JSTL)或自定义标签库来实现的。标签库允许在JSP页面中使用自定义的标签,从而简化页面逻辑、增强…...
3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密
前言 随着人工智能技术的迅猛发展,AI 赋能编程成为了必然趋势。通义灵码应运而生,它是阿里巴巴集团在人工智能与编程领域深度探索的结晶。通义灵码旨在借助 AI 的强大能力,为开发者提供更加智能、高效的编程辅助工具。通义灵码 2.0 作为其升…...
STM32 Flash详解教程文章
目录 Flash基本概念理解 Flash编程接口FPEC Flash擦除/写入流程图 Flash选项字节基本概念理解 Flash电子签名 函数读取地址下存放的数据 Flash的数据处理限制部分 编写不易,请勿搬运,感谢理解!!! Flash基本概念…...
ubuntu服务器部署
关闭欢迎消息 服务器安装好 ubuntu 系统后,进行终端登录,会显示出很多的欢迎消息 通过在用户的根目录下执行 touch .hushlogin 命令,再次登录终端就不会出现欢迎消息 修改hostname显示 修改 /etc/hostname 文件内容为主机名,保…...
小爱音箱控制手机和电视听歌的尝试
最近买了小爱音箱pro,老婆让我扔了,吃灰多年的旧音箱。当然舍不得,比小爱还贵,刚好还有一台红米手机,能插音箱,为了让音箱更加灵活,买了个2元的蓝牙接收模块Type-c供电3.5接口。这就是本次尝试起…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
