您的位置:首页 > 产品设计 > UI/UE

Implement Queue using Stacks

2015-07-24 11:13 651 查看


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 top
,
size
,
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).

Show Tags

Show Similar Problems

Have you met this question in a real interview

既然仍然可以用list模拟,先给出用list模拟的,再给出用stack模拟的。
代码如下:
list模拟队列

class MyQueue {
List<Integer> queue = new ArrayList<Integer>();
// Push element x to the back of queue.
public void push(int x) {
queue.add(x);
}

// Removes the element from in front of queue.
public void pop() {
if(!empty())
queue.remove(queue.get(0));
}

// Get the front element.
public int peek() {
return queue.get(0);
}

// Return whether the queue is empty.
public boolean empty() {
return queue.size()==0;//return queue.isEmpty()也行
}
}


2个stack模拟队列如下:

class MyQueue {
Stack<Integer> s1 = new Stack<>();
Stack<Integer> s2 = new Stack<>();
// Push element x to the back of queue.
public void push(int x) {
s1.add(x);
}

// Removes the element from in front of queue.
public void pop() {
if(!s2.isEmpty()){
s2.pop();
}else{
while(!s1.isEmpty()){
s2.push(s1.pop());
}
s2.pop();//pop()有返回值,但是这里不接收即可,满足方法void的要求
}
}

// Get the front element.
public int peek() {
if(!s2.isEmpty()){
return s2.peek();
}else{
while(!s1.isEmpty()){
s2.push(s1.pop());
}
return s2.peek();
}
}

// Return whether the queue is empty.
public boolean empty() {
return s1.isEmpty()&&s2.isEmpty() ;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: