当前位置: 首页 > 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.xdnf.cn/news/1211203.html

相关文章:

  • Leetcode-3152 特殊数组 II
  • 进阶向:Manus AI与多语言手写识别
  • 【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(5)——Tool Calling(工具调用)
  • scrapy框架新浪新闻
  • 【大语言模型入门】—— Transformer 如何工作:Transformer 架构的详细探索
  • 用LangGraph实现聊天机器人记忆功能的深度解析
  • k8s搭建nfs共享存储
  • AI应用:电路板设计
  • Linux 线程概念与控制
  • Excel文件批量加密工具
  • Intellij Idea--解决Cannot download “https://start.spring.io‘: Connect timedout
  • 爬虫自动化:一文掌握 PyAutoGUI 的详细使用
  • Kruskal算法
  • 智能Agent场景实战指南 Day 23 : Agent安全与隐私保护
  • 百度前端面试题目整理
  • VUE进阶案例
  • 【C#学习Day13笔记】静态成员、接口、运算符重载和索引器
  • 小杰数据结构(one day)——心若安,便是晴天;心若乱,便是阴天。
  • python基础:request请求Cookie保持登录状态
  • p5.js 从零开始创建 3D 模型,createModel入门指南
  • MongoDB系列教程-教程概述
  • SQL 怎么学?
  • STM32--DHT11(标准库)驱动开发
  • spring cloud sentinel 动态规则配置
  • 【华为机试】20. 有效的括号
  • docker docker、swarm 全流程执行
  • C++多态:面向对象编程的灵魂之
  • 网络安全第15集
  • 力扣30 天 Pandas 挑战(3)---数据操作
  • C# _列表(List<T>)_ 字典(Dictionary<TKey, TValue>)