当前位置: 首页 > 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.dtcms.com/a/303975.html

相关文章:

  • 40+个常用的Linux指令——下
  • 基于变频与移相混合控制(PFM+PSM)的全桥LLC谐振变换器仿真模型
  • 机械臂抓取的无模型碰撞检测代码
  • 仿函数+优先级队列priority_queue的模拟实现
  • P2910 [USACO08OPEN] Clear And Present Danger S
  • AutoGen Agent 使用指南
  • 华为HCIA-Cloud Service 从知识到实践的学习指南
  • SQL排查、分析海量数据以及锁机制
  • WebRTC(十四):WebRTC源码编译与管理
  • Webpack 优化策略
  • 如何用即构ZEGO SDK和uni-app开发一款直播带货应用?
  • uniapp 如果进入页面输入框自动聚焦,此时快速返回页面或者跳转到下一个页面,输入法顶上来的页面出现半屏的黑屏问题。
  • 使用JavaScript实现轮播图的任意页码切换和丝滑衔接切换效果
  • uniapp 实现全局变量
  • 【数据结构】用堆实现排序
  • vue3+vite 使用liveplayer加载视频
  • MySQL MVCC:并发神器背后的原理解析
  • 网工知识——OSPF摘要知识
  • [工具类] 分片上传下载,MD5校验
  • echarts饼图
  • 封装$.ajax
  • 一个人开发一个App(数据库)
  • OpenAI Python API 完全指南:从入门到实战
  • 【学习笔记】Lean4 定理证明 ing
  • 7.29错题(zz)史纲 7章 建立新中国
  • Scala实用编程(附电子书资料)
  • Node.js 内置模块
  • AR辅助前端设计:虚实融合场景下的设备维修指引界面开发实践
  • 学习Scala语言的最佳实践有哪些?
  • GCC、glibc、GNU C(gnuc)的关系