题目链接 232. 用栈实现队列
class MyQueue {
Stack<Integer> stack1;//进入的栈
Stack<Integer> stack2;//出去的栈
public MyQueue() {
//使用两个栈实现队列
stack1 = new Stack<>();
stack2 = new Stack<>();
}
public void push(int x) {
stack1.push(x);
}
public int pop() {
stack2IsEmpty();
return stack2.pop();
}
public int peek() {
stack2IsEmpty();
return stack2.peek();
}
public boolean empty() {
return stack1.isEmpty() && stack2.isEmpty();
}
private void stack2IsEmpty(){
if(!stack2.isEmpty()) return;
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
}
题目链接 225. 用队列实现栈
class MyStack {
//使用两个队列实现栈
Queue<Integer> queue1;
Queue<Integer> queue2;
public MyStack() {
queue1 = new LinkedList<>();
queue2 = new LinkedList<>();
}
public void push(int x) {
queue2.add(x);
while(!queue1.isEmpty()){
queue2.offer(queue1.poll());
}
Queue<Integer> queueTemp;
queueTemp = queue2;
queue2 = queue1;
queue1 = queueTemp;
}
public int pop() {
return queue1.poll();
}
public int top() {
return queue1.peek();
}
public boolean empty() {
return queue1.isEmpty();
}
}