当前位置: 首页 > news >正文

C++:stack与queue的使用

stack与queue的使用

  • 一.stack与queuej基础
    • 1.stack
      • 1.1基本认识
      • 1.2示例代码
      • 代码功能解析
    • 2.queue
      • 2.1基础知识
      • 操作说明
      • 2.2示例代码
      • 代码分析

一.stack与queuej基础

1.stack

1.1基本认识

在这里插入图片描述
以上图片展示了栈(stack)这种数据结构的基本操作示意。栈是一种遵循后进先出(LIFO,Last In First Out)原则的线性数据结构。

  • push():这是栈的入栈操作,用于将元素添加到栈顶。
  • pop():这是栈的出栈操作,用于移除栈顶元素。
  • top:表示栈顶位置,栈顶是栈中最后一个被添加的元素所在的位置。

栈广泛应用于各种场景,例如函数调用时的栈帧管理、表达式求值、括号匹配等问题的解决。

1.2示例代码

#include<iostream>
#include<stack>
#include<queue>
using namespace std;void test01()
{stack<int> st;st.push(1);st.push(2);st.push(3);st.push(4);st.push(5);cout << st.size() << endl;while (!st.empty()){cout << st.top() << " ";st.pop();}
}int main() {test01();return 0;
}

代码功能解析

  1. test01 函数
    • 首先定义了一个整型栈 stack<int> st;
    • 然后依次将 12345 这几个整数压入栈中。
    • 使用 cout << st.size() << endl; 输出栈的大小,此时栈中有 5 个元素,所以会输出 5
    • 接着使用 while 循环,只要栈不为空(!st.empty()),就输出栈顶元素(st.top())并弹出栈顶元素(st.pop())。按照栈后进先出的原则,输出顺序会是 5 4 3 2 1
  2. main 函数:在 main 函数中调用了 test01 函数来执行上述操作。

2.queue

2.1基础知识

在这里插入图片描述

操作说明

  • 入队(enqueue):元素从队尾加入,新元素排末尾,后续入队元素添右侧 。
  • 出队(dequeue):元素从队头离开,遵循先进先出(FIFO)原则,先入队的先出,出队后队头后移 。

2.2示例代码

#include<iostream>
#include<stack>
#include<queue>
using namespace std;void test02()
{queue<int> qu;qu.push(1);qu.push(2);qu.push(3);qu.push(4);qu.push(5);cout << qu.size() << endl;while (!qu.empty()){cout << qu.front() << " ";qu.pop();}
}int main() {test02();return 0;
}

代码分析

  1. test02 函数
    • 首先定义了一个整型队列 queue<int> qu;
    • 然后依次将 12345 这几个整数压入队列中。
    • 使用 cout << qu.size() << endl; 输出队列的大小,此时队列中有 `` 个元素,所以会输出 5
    • 接着使用 while 循环,只要队列不为空(!qu.empty()),就输出队列的队头元素(qu.front())并弹出队头元素(qu.pop())。按照队列先进先出的原则,输出顺序会是 1 2 3 4 5
  2. main 函数:在 main 函数中调用了 test02 函数来执行上述操作。
http://www.lryc.cn/news/604265.html

相关文章:

  • AI应用:电路板设计
  • [mcp: JSON-RPC 2.0 规范]
  • Excel文件批量加密工具
  • 【LeetCode 随笔】
  • flask使用celery通过数据库定时
  • 【C语言进阶】题目练习
  • 深入理解 Qt 元对象系统 (Meta-Object System)
  • 最新优茗导航系统源码/全开源版本/精美UI/带后台/附教程
  • Linux定时器和时间管理源码相关总结
  • 进阶向:Manus AI与多语言手写识别
  • Python 程序设计讲义(27):字符串的用法——字符串的常用操作
  • 快速了解逻辑回归
  • Kubernetes自动扩容方案
  • Linux 系统启动与 GRUB2 核心操作指南
  • BreachForums 黑客论坛强势回归
  • 【数据结构】用堆实现排序
  • Typecho handsome新增评论区QQ,抖音,b站等表情包
  • python基础:request请求Cookie保持登录状态
  • 关于算法的一些思考
  • PyCharm插件开发与定制指南:打造个性化开发环境
  • Vulnhub napping-1.0.1靶机渗透攻略详解
  • ITIL 4 高速IT:解耦架构——构建快速迭代的技术基座
  • JDK17 新特性跟学梳理
  • 深入解析Java元注解与运行时处理
  • [leetcode] 组合总和
  • C++多态:面向对象编程的灵魂之
  • DeepCompare文件深度对比软件的差异内容提取与保存功能深度解析
  • ESP8266 AT 固件
  • 破解企业无公网 IP 难题:可行路径与实现方法?
  • 系统学习算法:专题十五 哈希表