C++中用两个标准容器stack,实现一个队列的方法详解_C 语言

代码如下所示:

复制代码 代码如下:

// StackToQueue.cpp : 定义控制台应用程序的入口点。
//用两个标准容器stack,实现一个队列
#include "stdafx.h"
#include <iostream>
#include <stack>
using namespace std;
template <class T>
class StackToQueue
{
public:
 StackToQueue()
 {
  stack1;
  stack2;
 }
 void push(T e)
 {
  while (!stack2.empty())
  {
   T temp;
   temp = stack2.top();
   stack2.pop();
   stack1.push(temp);
  }
  stack2.push(e);
  while (!stack1.empty())
  {
   T temp;
   temp = stack1.top();
   stack1.pop();
   stack2.push(temp);
  }
 }

 void pop()
 {
   stack2.pop();
 }

 T front()
 {
  if (!empty())
  {
   return stack2.top();
  }
  else
  {
   return NULL;
  }
 }
 bool empty()
 {
  return stack2.empty();
 }
 size_t size()
 {
  return stack2.size();
 }
private:
 stack<T> stack1, stack2;
};
int _tmain(int argc, _TCHAR* argv[])
{
 StackToQueue<int> queue;
 int i(0);
 cout << "Enter several integer number,and press ctrl+z to the end." << endl;
 while (cin >> i)
 {
  queue.push(i);
 }
 cout << "The front element is: " << queue.front() << endl;
 cout << "The size now is: " << queue.size() << endl;
 if (!queue.empty())
 {
  cout << "Pop one element now." << endl;
  queue.pop();
 }
 cout << "The front element is: " << queue.front() << endl;
 cout << "The size now is: " << queue.size() << endl;
 return 0;
}

时间: 2024-11-05 12:19:57

C++中用两个标准容器stack,实现一个队列的方法详解_C 语言的相关文章

深入二叉树两个结点的最低共同父结点的详解_C 语言

题目:二叉树的结点定义如下: 复制代码 代码如下: struct TreeNode   {              int m_nvalue;             TreeNode* m_pLeft;             TreeNode* m_pRight;}; 输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点.分析:求数中两个结点的最低共同结点是面试中经常出现的一个问题.这个问题至少有两个变种.第一变种是二叉树是一种特殊的二叉树:查找二叉树.也就是树是排序过的,位于左子

基于一个简单定长内存池的实现方法详解_C 语言

    主要分为 3 个部分,memoryPool 是管理内存池类,block 表示内存块,chunk 表示每个存储小块.它们之间的关系为,memoryPool 中有一个指针指向某一起始 block,block 之前通过 next 指针构成链表结构的连接,每个 block 包含指定数量的 chunk.每次分配内存的时候,分配 chunk 中的数据地址. 主要数据结构设计: Block: 复制代码 代码如下: struct block {    block * next;//指向下一个block指

C++中用substr()函数消除前后空格的解决方法详解_C 语言

最近做了个题目,遇到了要将字符串前后空格消除的细节问题.在Java中好像有一个字符串函数为trim()可以消除字符串后的空格.对于c++,查了一下,可以引用一个c++标准库Boost,可以轻松解决,但要下载,设置环境变量,因而没去弄.当然还可以用正则表达式进行匹配,但似乎都大材小用.不如就用substr()函数,而且string有find_last_not_of,find_first_not_of等等属性,已经够我们解决问题了. 复制代码 代码如下: #include <iostream> #

Android中自定义一个View的方法详解_Android

本文实例讲述了Android中自定义一个View的方法.分享给大家供大家参考,具体如下: Android中自定义View的实现比较简单,无非就是继承父类,然后重载方法,即便如此,在实际编码中难免会遇到一些坑,我把自己遇到的一些问题和解决方法总结一下,希望对广大码友们有所帮助. 注意点① 用xml定义Layout时,Root element 最好使用merge 当我们需要继承一个布局比较复杂的ViewGroup(比较多的是LinearLayout.RelativeLayout)时,通常会用xml来

C++ STL容器stack和queue详解_C 语言

stack是一个比较简单的容器,它的使用也很简单,stack是LIFO容器,就是后进先出,最后添加进去的元素,第一个取出来 stack初始化 std::stack<int> first; std::stack<int> second(first); std::stack<int, std;:vector<int>> third; //使用vector初始化stack ### stack常用方法### empty();//判断是否为空 push(Elem e)

Android中自定义一个View的方法详解

本文实例讲述了Android中自定义一个View的方法.分享给大家供大家参考,具体如下: Android中自定义View的实现比较简单,无非就是继承父类,然后重载方法,即便如此,在实际编码中难免会遇到一些坑,我把自己遇到的一些问题和解决方法总结一下,希望对广大码友们有所帮助. 注意点① 用xml定义Layout时,Root element 最好使用merge 当我们需要继承一个布局比较复杂的ViewGroup(比较多的是LinearLayout.RelativeLayout)时,通常会用xml来

c语言stack(栈)和heap(堆)的使用详解_C 语言

一.预备知识-程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)-由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈.2.堆区(heap)-一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收.注意它与数据结构中的堆是两回事,分配方式倒是类似于链表.3.全局区(静态区)(static)-全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另

深入N皇后问题的两个最高效算法的详解_C 语言

N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行.同一列.同一斜线上的皇后都会自动攻击).一. 求解N皇后问题是算法中回溯法应用的一个经典案例回溯算法也叫试探法,它是一种系统地搜索问题的解的方法.回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试.在现实中,有很多问题往往需要我们把其所有可能穷举出来,然后从中找出满足某种要求的可能或最优的情况,从而得到整个问题的解.回溯算法就是解决这种问题的"通用算法",有&qu

【BeanUtils】自己写的一个BeanUtils-代码方法详解

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] BeanUtils工具包是由Apache公司所开发,主要是方便程序员对Bean类能够进行简便的操作. 在这里,不讲解如何使用apache的BeanUtils工具,而是我们自己写底层,自己利用类反射来实现BeanUtils的功能. 需要先学习类反射! 通过给定bean对象的类,和封装的Map对象,返回出一个bean对象. 准备bean对象: 这里准备了User类和Book类: Use