十天学完基础数据结构-第五天(栈(Stack)和队列(Queue))

在这里插入图片描述

栈的定义和特点

是一种线性数据结构,它遵循后进先出(LIFO)原则。栈具有以下基本概念和特点:

  • 栈顶:栈的顶部元素,是唯一可访问的元素。

  • 入栈:将元素添加到栈顶。

  • 出栈:从栈顶移除元素。

栈常常用于跟踪函数调用、表达式求值等场景。

队列的定义和特点

队列是一种线性数据结构,它遵循先进先出(FIFO)原则。队列具有以下基本概念和特点:

  • 队列前端:队列的第一个元素,是唯一可访问的元素。

  • 队尾:队列的最后一个元素,用于添加新元素。

  • 入队:将元素添加到队尾。

  • 出队:从队列前端移除元素。

队列常常用于任务调度、缓冲数据等场景。

栈和队列的常见操作

栈和队列支持以下常见操作:

  1. 入栈:将元素添加到栈顶。

  2. 出栈:从栈顶移除元素。

  3. 获取栈顶元素:查看但不移除栈顶元素。

队列

  1. 入队:将元素添加到队尾。

  2. 出队:从队列前端移除元素。

  3. 获取队列前端元素:查看但不移除队列前端元素。

下面是一个简单的C++示例,使用栈和队列:

#include <iostream>
#include <stack>
#include <queue>int main() {// 使用栈std::stack<int> myStack;// 入栈myStack.push(1);myStack.push(2);// 出栈int topElement = myStack.top();myStack.pop();// 使用队列std::queue<int> myQueue;// 入队myQueue.push(1);myQueue.push(2);// 出队int frontElement = myQueue.front();myQueue.pop();return 0;
}

练习题:

  1. 栈和队列的主要区别是什么?给出一个现实生活中的例子,说明何时使用栈和何时使用队列。

  2. 在栈中,最后一个入栈的元素是什么?在队列中,最后一个入队的元素是什么?

  3. 描述一种情况,其中栈可以用于解决问题。

  4. 描述一种情况,其中队列可以用于解决问题。

栈和队列的主要区别是什么?给出一个现实生活中的例子,说明何时使用栈和何时使用队列。

  • 主要区别:主要区别在于数据的访问顺序。栈遵循后进先出(LIFO)原则,最后进入的元素最先被访问。队列遵循先进先出(FIFO)原则,最早进入的元素最先被访问。

  • 示例:考虑以下示例,你在超市排队结账。队列的应用是很明显的,因为先来的顾客应该先结账,即最早进入队列的人最先付款。现实生活中的这种情况适合使用队列。

在栈中,最后一个入栈的元素是什么?在队列中,最后一个入队的元素是什么?

  • :在栈中,最后一个入栈的元素成为栈顶元素。栈顶元素是唯一可访问的元素,而且最后一个入栈的元素将成为新的栈顶元素。

  • 队列:在队列中,最后一个入队的元素仍然位于队列的队尾,而第一个入队的元素位于队列的队头。队尾元素等待其他元素出队后才能被访问。

描述一种情况,其中栈可以用于解决问题。

  • 情况示例:计算器应用中的表达式求值。当用户输入一个数或运算符时,可以使用栈来存储操作数和运算符。当遇到运算符时,从栈中弹出操作数,执行运算,然后将结果入栈。这样,栈可以帮助跟踪表达式的计算顺序。

注意:确保栈的操作符和操作数的顺序遵循运算符的优先级和结合性规则。

描述一种情况,其中队列可以用于解决问题。

  • 情况示例:任务调度。假设有多个任务需要执行,这些任务按照不同的优先级到达,可以使用队列来调度它们的执行顺序。高优先级任务入队时排在队列前端,低优先级任务排在队列后端。这样,队列可以确保按照优先级顺序执行任务。

注意:确保在任务执行时适时更新队列,以便根据新的任务到达情况进行调度。

在使用栈和队列时,要特别注意遵循它们的特点和规则,以确保正确的数据访问顺序和操作顺序。

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

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

相关文章

《计算机视觉中的多视图几何》笔记(12)

12 Structure Computation 本章讲述如何在已知基本矩阵 F F F和两幅图像中若干对对应点 x ↔ x ′ x \leftrightarrow x x↔x′的情况下计算三维空间点 X X X的位置。 文章目录 12 Structure Computation12.1 Problem statement12.2 Linear triangulation methods12.3 Geomet…

Boost程序库完全开发指南:1.2-C++基础知识点梳理

主要整理了N多年前&#xff08;2010年&#xff09;学习C的时候开始总结的知识点&#xff0c;好长时间不写C代码了&#xff0c;现在LLM量化和推理需要重新学习C编程&#xff0c;看来出来混迟早要还的。 1.const_cast <new_type> (expression)[1] 解析&#xff1a;const_c…

2023年哪款PDF虚拟打印机好用?

PDF文档想必大家都不陌生&#xff0c;在工作中经常会用到该格式的文档&#xff0c;那么有哪些方法能制作PDF文档呢&#xff1f;一般都是借助PDF虚拟打印机的&#xff0c;那么有哪些好用的软件呢&#xff1f; pdfFactory不仅为用户提供了丰富的PDF文档生成、打印功能&#xff0…

JAVA学习(4)-全网最详细~

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

【k8s】集群搭建篇

文章目录 搭建kubernetes集群kubeadm初始化操作安装软件(master、所有node节点)Kubernetes Master初始化Kubernetes Node加入集群部署 CNI 网络插件测试 kubernetes 集群停止服务并删除原来的配置 二进制搭建(单master集群)初始化操作部署etcd集群安装Docker部署master节点解压…

在visual studio里配置Qt插件并运行Qt工程

Qt插件&#xff0c;也叫qt-vsaddin&#xff0c;它以*.vsix后缀名结尾。visual studio简称为VS&#xff0c;从visual studio 2010版本开始&#xff0c;VS支持Qt框架的开发&#xff0c;Qt以插件方式集成到VS里。这里简述在visual studio 2019里配置Qt 5.14.2插件&#xff0c;并配…

MyBatisCodeHelper Pro3.x新版本插件自由

1效果图 我的版本为3.2.2 2.资源链接 码云地址点这里 3.使用说明 将我修改好后的MyBatisCodeHelper-Pro-obfuss.jar替换MybatisCodeHelperNew-3.x.x.zip&#xff08;原版本插件&#xff09;\MyBatisCodeHelper-Pro\lib中的MyBatisCodeHelper-Pro-obfuss.jar 4.实现与感谢…

全志ARM926 Melis2.0系统的开发指引②

全志ARM926 Melis2.0系统的开发指引② 编写目的4. 编译工具链使用4.1.工具链通用配置4.2.模块的工具链配置4.3.简单的 makefile 5. 固件烧录工具的安装5.1.PhoenixSuit 的安装步骤5.2.检验 USB 驱动安装5.3.使用烧录软件 PhoenixSuit -全志相关工具和资源-.1 全志固件镜像修改工…

Foxit PDF

Foxit PDF 福昕PDF 软件&#xff0c;可以很好的编辑PDF文档。 调整&#xff30;&#xff24;&#xff26;页面大小 PDF文档中&#xff0c;一个页面大&#xff0c;一个页面小 面对这种情况,打开Foxit PDF 右键单击需要调整的页面,然后选择"调整页面大小". 可以选择…

Java8 Lambda.stream.sorted() 方法使用浅析分享

文章目录 Java8 Lambda.stream.sorted() 方法使用浅析分享sorted() 重载方法一升序降序 sorted() 重载方法二升序降序多字段排序 mock代码 Java8 Lambda.stream.sorted() 方法使用浅析分享 本文主要分享运用 Java8 中的 Lambda.stream.sorted方法排序的使用&#xff01; sorted…

Go语言面经进阶10问

1.Golang可变参数 函数方法的参数&#xff0c;可以是任意多个&#xff0c;这种我们称之为可以变参数&#xff0c;比如我们常用的fmt.Println()这类函数&#xff0c;可以接收一个可变的参数。可以变参数&#xff0c;可以是任意多个。我们自己也可以定义可以变参数&#xff0c;可…

Day-06 基于 Docker安装 Nginx 镜像

1.去官方公有仓库查询nginx镜像 docker search nginx 2.拉取该镜像 docker pull nginx 3. 启动镜像&#xff0c;使用nginx服务&#xff0c;代理本机8080端口(测试是不是好使) docker run -d -p 8080:80 --name nginx-8080 nginx docker ps curl 127.0.0.1:8080

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤

目录 subprocess.Popen FILE warnings.catch_warnings site._Printer 这题很明显就是 SSTI了 源代码 我们试试看 {{7*7}} 然后我们就开始吧 原本我的想法是直接{{url_for.__globals__}} 但是回显是直接500 猜测过滤 我们正常来吧 {{"".__class__}} 查看当前…

CSS3与HTML5

box-sizing content-box&#xff1a;默认&#xff0c;宽高包不含边框和内边距 border-box&#xff1a;也叫怪异盒子&#xff0c;宽高包含边框和内边距 动画&#xff1a;移动translate&#xff0c;旋转、transform等等 走马灯&#xff1a;利用动画实现animation&#xff1a;from…

雷达编程实战之提高探测速度

有效帧频率作为雷达一个非常核心的指标&#xff0c;它代表了雷达探测识别的速度&#xff0c;速度越快&#xff0c;后级各项智能驾驶功能就能得到更快、更有效的判断。本篇文章首先从硬件的角度&#xff0c;提供了一种合理利用片上资源提高探测识别速度的常用方法&#xff0c;然…

SSL/TLS介绍以及wireshark抓包TLS Handshake报文

文章目录 1.概念1.1 SSL/TLS发展历史1.2 TLS两个阶段1.3 TLS报文头 2.TLS Handshake2.1 Handshake具体过程2.1.1 单向认证和双向认证2.1.2 复用TLS协商结果Session Identifier&#xff08;会话标识符&#xff09;Session Ticket&#xff08;会话票据&#xff09; 2.2 Handshake…

基于j2ee的交通管理信息系统/交通管理系统

摘 要 随着当今社会的发展&#xff0c;时代的进步&#xff0c;各行各业也在发生着变化&#xff0c;比如交通管理这一方面&#xff0c;利用网络已经逐步进入人们的生活。传统的交通管理&#xff0c;都是工作人员线下手工统计&#xff0c;这种传统方式局限性比较大且花费较多。计…

全志ARM926 Melis2.0系统的开发指引①

全志ARM926 Melis2.0系统的开发指引① 1. 编写目的2. Melis2.0 系统概述3. Melis2.0 快速开发3.1. Melis2.0 SDK 目录结构3.2. Melis2.0 编译环境3.3. Melis2.0 固件打包3.4. Melis2.0 固件烧录3.5.串口打印信息3.6. Melis2.0 添加和调用一个模块3.6.1. 为什么划分模块&#xf…

软件或游戏提示msvcp120.dll丢失的5种常用解决方法,msvcp120.dll文件全面解析

在当今数字化的时代&#xff0c;我们的生活已经离不开各种软件和游戏。然而&#xff0c;有时候我们可能会遇到一些技术问题&#xff0c;比如“软件或游戏提示msvcp120.dll丢失”。这个问题对于许多人来说可能很棘手&#xff0c;但是只要掌握了正确的解决方法&#xff0c;就能轻…

【现代机器人学】学习笔记十四:中文版印刷/翻译勘误

首先声明&#xff0c;这个印刷/勘误并非经过官方的认可&#xff0c;只是我个人的粗浅的理解。如果内容有误&#xff0c;恳请大家谅解指正。 其实有的并不算错&#xff0c;只是我个人认为不太准确&#xff0c;在我学习过程中产生了一些小疑惑和误解。 都是一些小毛病&#xff…