leetcode 上很简单的用两个堆栈来模拟队列
https://leetcode.com/problems/implement-queue-using-stacks/
import java.util.LinkedList;
class MyQueue {
/*
* myqueue use two tack to simulate queue ,use push() operation only on stack1.use pop() or get() operation only on stack2
*/
private LinkedList<Integer> s1=new LinkedList<Integer>();
private LinkedList<Integer> s2=new LinkedList<Integer>();
// Push element x to the back of queue.
public void push(int x) {
s1.push(x);
}
// Removes the element from in front of queue.
public void pop() {
if(s2.size()>0)
s2.pop();
else if(s1.size()>0)
{
while(s1.size()>0)//remove element in stack1 to stack2 until stack1 is empty
{
s2.push(s1.pop());
}
s2.pop();
}
else
{
//queue is empty do nothing!
}
}
// Get the front element.
public int peek() {
int temp;
if(s2.size()>0)
{
temp=s2.peek();
return temp;
}
else if(s1.size()>0)
{
while(s1.size()>0)
{
s2.push(s1.pop());
}
temp=s2.peek();
return temp;
}
else
{
//在queue为空的情况下
return 0;//加句话就是为了编译通过 java编译器没有else不让通过
}
}
// Return whether the queue is empty.
public boolean empty() {
if(s1.size()==0&&s2.size()==0)
return true;
else
return false;
}
}