Implement the following operations of a queue using stacks.

  • push(x) -- Push element x to the back of queue.
  • pop() -- Removes the element from in front of queue.
  • peek() -- Get the front element.
  • empty() -- Return whether the queue is empty.

Notes:

  • You must use only standard operations of a stack -- which means only push
    to top
    peek/pop from topsize,
    and is empty operations are valid.
  • Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
  • You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).

两个栈,一个作为压入栈,一个作为弹出栈。当弹出栈为空时,把压入栈中的数据依次弹出并压入到弹出栈中。

假设两者均为空,说明队列为空。

class Queue {
public:
// Push element x to the back of queue.
void push(int x) {
push_stack.push(x);
} // Removes the element from in front of queue.
void pop(void) {
if (pop_stack.empty())
{
while (!push_stack.empty())
{
pop_stack.push(push_stack.top());
push_stack.pop();
}
if (!pop_stack.empty())
pop_stack.pop();
}
else
{
pop_stack.pop();
}
} // Get the front element.
int peek(void) {
if (pop_stack.empty())
{
while (!push_stack.empty())
{
pop_stack.push(push_stack.top());
push_stack.pop();
}
if (!pop_stack.empty())
return pop_stack.top();
}
else
{
return pop_stack.top();
}
return 0;
} // Return whether the queue is empty.
bool empty(void) {
if (pop_stack.empty() && push_stack.empty())
return true;
else
return false;
} private:
stack<int> pop_stack;
stack<int> push_stack;
};

最新文章

  1. .net core 用grpc实现微服务
  2. js对象详解
  3. 转发(forward)和重定向(sendRedirect)
  4. Validation failed for one or more entities. See &#39;EntityValidationErrors&#39; property for more details.
  5. php的if语句单行与多行
  6. SG函数 专题练习
  7. Python学习笔记异常
  8. RobotFrameWork接口报文测试-----(一)简单demo的实现
  9. CreateEvent的使用方法
  10. CentOS6.5一键安装MySQL5.5.32(源码编译)
  11. 阻塞机制下的recv小结
  12. SQL SERVER大话存储结构(6)_数据库数据文件
  13. ASP.NET 设计模式:应用程序分层与关注点分离(SoC)
  14. 常见linux命令用法介绍
  15. windows 安装zookeeper
  16. JMX/RMI Nice ENGAGE &lt;= 6.5 Remote Command Execution
  17. vue的环境安装(一node环境)
  18. 阿里云短信服务bug
  19. html超文本标记语言基础一
  20. Flask---第一个例子--使用Flask写的【Hello World !】的web程序

热门文章

  1. 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)- XOR(二进制使用)
  2. 七. 多线程编程6.isAlive()和join()的使用
  3. 更改vsftpd默认的21端口
  4. 解析HTML文件 - 运用SgmlReader类来解析HTML文件
  5. [置顶] kubernetes资源类型--deployment
  6. [置顶] cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台
  7. scala,import test._ ; import test.{ClassA,ClassB}
  8. flask的session研究和flask-login的session研究
  9. 【Todo】【转载】Java中的锁机制2 - Lock
  10. Attribute 和 Parameter 的区别