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

剑指offer C ++双栈实现队列

1. 基础


队列:先进先出,即插入数据在队尾进行,删除数据在队头进行;

栈:后进先出,即插入与删除数据均在栈顶进行。

2. 思路
两个栈实现一个队列的思想:用pushStack栈作为push数据的栈,用popStack栈作为pop数据的栈。

只要是对队列进行push操作,就将数据push入pushStack栈中。
要实现队列的pop操作,有二点原则,如果popStack为空的话那么我们就将pushStack所有的元素放到popStack中,然后取popStack栈顶元素就是队列的队头;如果popStack不为空的话,我们就直接获取popStack的栈顶元素。
对于top操作来说和pop操作类似,只是最后一步不用pop了。

3. 代码

// ReverseList.cpp : 定义控制台应用程序的入口点。
//#include <iostream>
#include <Stack>
using namespace std;class CQueue
{
public:CQueue() {}void appendTail(int value) {Sin.push(value);}int deleteHead() {if (Sout.empty()) {while (!Sin.empty()) {Sout.push(Sin.top());Sin.pop();}}if (!Sout.empty()) {int res = Sout.top();Sout.pop();return res;}else {return -1;}}stack<int> Sin, Sout;
};int main(int argc, char* argv[])
{CQueue test;test.appendTail(1);test.appendTail(2);test.appendTail(3);test.appendTail(4);test.appendTail(5);test.appendTail(6);test.appendTail(7);int result = test.deleteHead();std::cout << "result:" << result << std::endl;result = test.deleteHead();std::cout << "result:" << result << std::endl;result = test.deleteHead();std::cout << "result:" << result << std::endl;result = test.deleteHead();std::cout << "result:" << result << std::endl;result = test.deleteHead();std::cout << "result:" << result << std::endl;result = test.deleteHead();std::cout << "result:" << result << std::endl;result = test.deleteHead();std::cout << "result:" << result << std::endl;return 0;
}

http://www.lryc.cn/news/316749.html

相关文章:

  • 【YOLOv9】训练模型权重 YOLOv9.pt 重新参数化轻量转为 YOLOv9-converted.pt
  • Zookeeper搭建
  • 2.Datax数据同步之Windows下,mysql和sqlserver之间的自定义sql文数据同步
  • commonjs和esmodule
  • Android的编译系统
  • Midjourney指控Stability AI夜袭数据,网络风波一触即发
  • JVM知识整体学习
  • 蓝桥杯--日期统计
  • [leetcode~dfs]1261. 在受污染的二叉树中查找元素
  • PyQt5使用
  • 利用GPT开发应用005:Codex、Turbo、ChatGPT、GPT-4
  • 制造行业大数据应用:四大领域驱动产业升级与智慧发展
  • 25.5 MySQL 聚合函数
  • 多维时序 | Matlab实现VMD-CNN-LSTM变分模态分解结合卷积神经网络结合长短期记忆神经网络多变量时间序列预测
  • 用Python进行机器学习:Scikit-learn的入门与实践【第126篇—Scikit-learn的入门】
  • 2024年G3锅炉水处理证模拟考试题库及G3锅炉水处理理论考试试题
  • 常用的gpt网站
  • java中string类型常用的37个函数
  • 【JVM】字节码指令 getstatic
  • P1179 [NOIP2010 普及组] 数字统计
  • 使用Java的等待/通知机制实现一个简单的阻塞队列
  • linux kernel物理内存概述(七)
  • 【C#】.net core 6.0 使用第三方日志插件Log4net,日志输出到控制台或者文本文档
  • TSINGSEE青犀煤矿矿井视频监控与汇聚融合管理视频监管平台建设方案
  • C语言 - 各种自定义数据类型
  • 第四弹:Flutter图形渲染性能
  • 基础算法(三)#蓝桥杯
  • 人工智能在增强数据安全方面的作用
  • python】jupyter notebook导出pdf和pdf不显示中文问题
  • 通过SDKMAN安装各种版本JDK