数据结构用两个栈实现一个队列的实例

发布时间 - 2026-01-11 01:59:57    点击率:

数据结构用两个栈实现一个队列的实例

栈是先进后出,队列是先进先出

每次元素都push在st1中,pop的时候如果st2为空,将st1的栈顶元素放在st2的栈底,这样st1的所有元素都放在st2中,st1的栈底就是st2的栈顶,pop st2的栈顶,这样就满足了队列的先进先出。

#include <iostream>
using namespace std;
#include <stack>
#include <stdlib.h>

template <class T>
class SQueue {
public:
  void Push(const T& value);
  T Pop();
private:
  stack<T> st1;
  stack<T> st2;
};

template <class T>
T SQueue<T>::Pop()
{
  if (st2.size() <= 0)
  {
    if (st1.size() == 0)
    {
      exit(1);
    }
    while ((st1.size() > 0))
    {
      T& top = st1.top();
      st2.push(top);
      st1.pop();
    }
  }

  T head = st2.top();
  st2.pop();
  return head;

}

template <class T>
void SQueue<T>::Push(const T& value)
{
  st1.push(value);
}

int main()
{
  SQueue<int> sq;
  for (int i = 0; i < 10; ++i)
  {
    sq.Push(i);
  }
  for (int i = 0; i < 5; ++i) 
  {
    cout << sq.Pop() << " ";
  }

  for (int i = 0; i < 5; ++i) //分两次验证
  {
    cout << sq.Pop() << " ";
  }
  cout << endl;

  system("pause");
  return 0;
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# 数据结构用两个栈实现一个队列  # 两个栈实现一个队列  # JavaScript数据结构学习之数组、栈与队列  # C++ 数据结构实现两个栈实现一个队列  # JavaScript数组实现数据结构中的队列与堆栈  # Java模拟栈和队列数据结构的基本示例讲解  # JavaScript数据结构与算法之栈与队列  # 栈和队列数据结构的基本概念及其相关的Python实现  # LinkedList学习示例模拟堆栈与队列数据结构  # C#数据结构与算法揭秘五 栈和队列  # 放在  # 两次  # 数据结构  # 希望能  # 谢谢大家  # 为空  # include  # lt  # iostream  # gt  # stack  # stdlib  # std  # namespace  # template  # java  # pop  # strong  # push  # class 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用AWS免费套餐快速搭建高效网站?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  昵图网官方站入口 昵图网素材图库官网入口  Laravel如何创建自定义中间件?(Middleware代码示例)  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  php json中文编码为null的解决办法  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  如何快速搭建高效香港服务器网站?  香港服务器WordPress建站指南:SEO优化与高效部署策略  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  Laravel如何实现一对一模型关联?(Eloquent示例)  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Java解压缩zip - 解压缩多个文件或文件夹实例  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Laravel如何使用模型观察者?(Observer代码示例)  如何在自有机房高效搭建专业网站?  怎么用AI帮你设计一套个性化的手机App图标?  开心动漫网站制作软件下载,十分开心动画为何停播?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  WEB开发之注册页面验证码倒计时代码的实现  Android滚轮选择时间控件使用详解  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  如何在云主机快速搭建网站站点?  晋江文学城电脑版官网 晋江文学城网页版直接进入  网站制作报价单模板图片,小松挖机官方网站报价?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何在香港免费服务器上快速搭建网站?  Laravel如何使用withoutEvents方法临时禁用模型事件  网站制作壁纸教程视频,电脑壁纸网站?  如何在腾讯云服务器上快速搭建个人网站?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  如何在万网自助建站中设置域名及备案?  如何自定义建站之星网站的导航菜单样式?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  Python文件异常处理策略_健壮性说明【指导】  如何利用DOS批处理实现定时关机操作详解  原生JS获取元素集合的子元素宽度实例  Python图片处理进阶教程_Pillow滤镜与图像增强  iOS正则表达式验证手机号、邮箱、身份证号等  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】