栈与队列1|232.用栈实现队列|225. 用队列实现栈
一、栈与队列理论
每种语言都有自己的内部原理,需要思考栈与队列的底层实现问题 。
一、232.用栈实现队列
题目连接:232. 用栈实现队列 - 力扣(LeetCode)
import java.util.Stack;
public class MyQueue {
private Stack<Integer> StackIn;
private Stack<Integer> StackOut;
public MyQueue() {
StackIn = new Stack<>(); // 负责进栈
StackOut = new Stack<>(); // 负责出栈
}
public void push(int x) {
StackIn.push(x);
}
public int pop() {
if(StackOut.empty()){
while(!StackIn.empty()){
StackOut.push(StackIn.pop());
}
}
int result = StackOut.pop();
return result;
}
public int peek() {
int result = this.pop();
StackOut.push(result);
return result;
}
public boolean empty() {
return StackOut.empty() && StackIn.empty();
}
}
二、225. 用队列实现栈
题目连接:225. 用队列实现栈 - 力扣(LeetCode)
import java.util.ArrayDeque;
import java.util.Deque;
public class MyStack {
Deque<Integer> deque;
public MyStack() {
deque = new ArrayDeque<>();
}
public void push(int x) {
deque.addLast(x);
}
public int pop() {
return deque.removeLast();
}
public int top() {
return deque.getLast();
}
public boolean empty() {
return deque.isEmpty();
}
}