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

 更新时间:2017年06月22日 09:21:56   投稿:lqh  
这篇文章主要介绍了C++语言数据结构用两个栈实现一个队列的实例的相关资料,需要的朋友可以参考下

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

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

每次元素都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;
}

这里写图片描述

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

相关文章

  • C语言位运算符:与、或、异或、取反、左移与右移详细介绍

    C语言位运算符:与、或、异或、取反、左移与右移详细介绍

    以下是对C语言中的位运算符:与、或、异或、取反、左移与右移进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • Microsoft Visual Studio 2022的安装与使用详细教程

    Microsoft Visual Studio 2022的安装与使用详细教程

    Microsoft Visual Studio 2022是Microsoft Visual Studio软件的一个高版本,能够编写和执行C/C++代码,具有强大的功能,是开发C/C++程序的主流软件,这篇文章主要介绍了Microsoft Visual Studio 2022的安装与使用详细教程
    2024-01-01
  • C语言图书管理系统课程设计

    C语言图书管理系统课程设计

    这篇文章主要为大家详细介绍了C语言图书管理系统课程设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • VS Code+msys2配置Windows系统下C/C++开发环境

    VS Code+msys2配置Windows系统下C/C++开发环境

    我们在windows10中使用VS Code做C++程序开发过程中,需要安装MSYS2和MinGW,下面这篇文章主要给大家介绍了关于VS Code+msys2配置Windows系统下C/C++开发环境的相关资料,需要的朋友可以参考下
    2022-12-12
  • C语言中 & 和 &&的区别详解

    C语言中 & 和 &&的区别详解

    这篇文章主要介绍了C语言中 & 和 &&的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • C++数据结构之实现邻接表

    C++数据结构之实现邻接表

    这篇文章主要为大家详细介绍了C++数据结构之实现邻接表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C/C++中使用列表框组件Qt ListWidget

    C/C++中使用列表框组件Qt ListWidget

    本文详细讲解了C/C++中使用列表框组件Qt ListWidget的方法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11
  • C++中异常机制的实现机制详解

    C++中异常机制的实现机制详解

    这篇文章主要给大家介绍了关于C++中异常机制的实现机制的相关资料,文中通过图文以及示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-06-06
  • C语言 CRITICAL_SECTION用法案例详解

    C语言 CRITICAL_SECTION用法案例详解

    这篇文章主要介绍了C语言 CRITICAL_SECTION用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C语言素数(质数)判断的3种方法举例

    C语言素数(质数)判断的3种方法举例

    这篇文章主要给大家介绍了关于C语言素数(质数)判断的3种方法,质数是只能被1或者自身整除的自然数(不包括1),称为质数,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11

最新评论