题目

Implement the following operations of a stack using queues.

push(x) – Push element x onto stack.

pop() – Removes the element on top of the stack.

top() – Get the top element.

empty() – Return whether the stack is empty.

Notes:

You must use only standard operations of a queue – which means only push to back, peek/pop from front, size, and is empty operations are valid.

Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.

You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).

分析

用队列实现栈。

用两个队列,其中一个队列用户存储当前元素,另一个辅助队列作为pop和top操作时的临时存储。并利用flag标志,表示存储当前所有元素的队列。

AC代码

class Stack {
public:
// Push element x onto stack.
void push(int x) {
que[flag].push(x);
} // Removes the element on top of the stack.
void pop() {
while (que[flag].size() > 1)
{
que[1 - flag].push(que[flag].front());
que[flag].pop();
}//while
que[flag].pop();
flag = 1 - flag;
} // Get the top element.
int top() {
while (que[flag].size() > 1)
{
que[1 - flag].push(que[flag].front());
que[flag].pop();
}//while
int ret = que[flag].front();
que[1 - flag].push(que[flag].front());
que[flag].pop(); flag = 1 - flag; return ret;
} // Return whether the stack is empty.
bool empty() {
return que[flag].empty();
} private:
queue<int> que[2];
int flag = 0; //作为存储队列
};

GitHub测试程序源码

最新文章

  1. 使用命令 gradle uploadArchives 的异常: Unable to initialize POM pom-default.xml: Failed to validate POM for project
  2. win8 系统安装node环境记录
  3. 使用Webview实现app启动引导页
  4. rabbitmq 学习足迹
  5. [小哥Allegro72讲速成视频]
  6. 点击显示div
  7. ycsb使用方法
  8. Linux各发行版本简介
  9. Flex4 自定义通用的ImageButton
  10. 【BZOJ】【2809】【APIO2012】派遣dispatching
  11. static和extern的区别
  12. .net软件工程师面试题(参考答案)
  13. IDEA 快捷键整理
  14. 加载loading的ajax写法
  15. 汉高澳大利亚sinox2014电影播放flash最好的办法是安装游戏windows文本firefox
  16. EF的DbSet属性的Where查询,注意事项
  17. multiset与set
  18. jmeter奇淫妙计之遍历sql多列结果集
  19. Java 错误: 找不到或无法加载主类,问题集合
  20. Fastjson 爆出远程代码执行高危漏洞,更新版本已修复

热门文章

  1. IIS中的 Asp.Net Core 和 dotnet watch
  2. 转 DataGuard环境搭建 (一主一备一级联)
  3. 转 db_file_multiblock_read_count
  4. 043 Multiply Strings 字符串相乘
  5. RDL 数值列排序
  6. iOS 容联离线消息推送
  7. filter配置多个url-pattern和排除个别servlet
  8. 【Linux】Ubuntu配置zshell&amp;oh-my-zsh
  9. 策略模式和php实现
  10. 获取url的参数值