注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Aspirer's blog

停止维护,新博客地址:http://aspirer.wang/

 
 
 

日志

 
 

用两个栈实现一个队列  

2009-08-17 16:28:36|  分类: 学习心得 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

用两个栈实现一个队列 - aspirer - Aspirers blog

#include <iostream>
#include <stack>
using namespace std;

template <typename T>
class StackQueue
{
private:
 stack<T> st1;
 stack<T> st2;
public:
 void PushBack(T &d);
 void PopFront();
 T &GetFront();
};

template <typename T>
void StackQueue<T>::PopFront()
{
 if (!st2.empty())
 {
  st2.pop();
 }
 else
 {
  while (!st1.empty())
  {
   st2.push(st1.top());
   st1.pop();
  }
  st2.pop();
 }
 
}

template <typename T>
void StackQueue<T>::PushBack(T &d)
{
 st1.push(d);
}

template <typename T>
T &StackQueue<T>::GetFront()
{
 if (!st2.empty())
 {
  return st2.top();
 }
 else
 {
  while (!st1.empty())
  {
   st2.push(st1.top());
   st1.pop();
  }
  return st2.top();
 }
}

int main()
{
 StackQueue<int> sq;
 cout << "push:\t";
 for (int i = 0; i < 5; ++i)
 {
  sq.PushBack(i);
  cout << i;
  if (i + 1 < 5)
  {
   cout << "<--";
  }
 }
 cout << endl;
 cout << "pop:\t";
 for (int i = 0; i < 5; ++i)
 {
  cout << sq.GetFront();
  sq.PopFront();
  if (i + 1 < 5)
  {
   cout << "<--";
  }
 }
 cout << endl;

 
 return 0;
}

  评论这张
 
阅读(580)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018