十天学完基础数据结构-第五天(栈(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…

在js中使用proxy的棘手问题

在js中使用proxy的棘手问题 ES2015引入了大量的新功能&#xff0c;其中一个特性是Proxy&#xff08;查看proxy详细介绍与使用&#xff09;。虽然proxy能代来非常多好处&#xff0c;但是它具有一些限制。有人会称之为"设计缺陷"。在这篇文章里&#xff0c;我们就来看…

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…

简析Cookie、Session、Token

手打不易&#xff0c;如果转摘&#xff0c;请注明出处&#xff01; 注明原文&#xff1a;https://zhangxiaofan.blog.csdn.net/article/details/133498756 文章目录 简析Cookie、Session、Token什么是 Cookie &#xff1f;什么是 Session &#xff1f;Cookie 和 Session 到底是…

整数和字符串比较的坑

结果竟然是相同&#xff0c;惊呆了吧&#xff1f; $num1 2023快放假了; $num2 2023;if ($num1 $num2) {echo 相同; } else {echo 不相同; }num2改成字符串类型&#xff0c;结果&#xff1a;不相同&#xff0c;又不懵了吧&#xff1f; $num1 2023快放假了; $num2 2023;if…

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

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

BasePopup - Android下打造通用便捷的PopupWindow弹窗库

官网 GitHub - razerdp/BasePopup: Android下打造通用便捷的PopupWindow弹窗库 介绍 BasePopup是一个对系统PopupWindow进行封装并改进的弹窗库&#xff0c;它是一个基础库类&#xff0c;有着非常高的自由度与丰富的API&#xff0c;您可以在BasePopup的框架下非常轻松的完成…

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节点解压…

Android 10.0 Launcher3定制化之folder文件夹去掉背景功能实现

1.概述 在10.0的系统产品开发rom定制中,在Launcher3的开发中,在Launcher3的folder文件夹中, 在进入文件夹由于背景是白色的,不是很美观,所以要求去掉白色背景,要求背景换成透明的 所以需要从folder文件夹流程中,找到相关的背景设置的地方,去掉相关背景的功能就可以了 …

在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__}} 查看当前…

MySQL索引视图

索引 索引是一种特殊的数据库结构&#xff0c;可以用来快速查询数据库表中的特定记录。索引是提高数据库性能的重要方式。MySQL中&#xff0c;所有的数据类型都可以被索引&#xff0c;MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 索引…

CSS3与HTML5

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