首页 > 学院 > 开发设计 > 正文

225. Implement Stack using Queues

2019-11-08 01:31:42
字体:
来源:转载
供稿:网友

题目

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).


思路

栈的相关实现


代码

class Stack { queue<int> q1; queue<int> q2;public: // Push element x onto stack. void push(int x) { if(q1.empty()) { q2.push(x); } else { q1.push(x); } } // Removes the element on top of the stack. void pop() { if(q1.empty()) { transElement(2); q2.pop(); } else { transElement(1); q1.pop(); } } // Get the top element. int top() { int result; if(q1.empty()) { //q2转q1 transElement(2); result = q2.front(); q1.push(q2.front()); q2.pop(); } else { transElement(1); result = q1.front(); q2.push(q1.front()); q1.pop(); } return result; } // Return whether the stack is empty. bool empty() { return q1.empty() && q2.empty(); } //1为q1->q2,2为q2->q1 void transElement(int num) { if(num == 1) { while(q1.size() > 1) { q2.push(q1.front()); q1.pop(); } } else { while(q2.size() > 1) { q1.push(q2.front()); q2.pop(); } } }};
上一篇:八大排序算法

下一篇:Session 跟 Cookie

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表