import java.util.Stack;
//用两个栈实现
public class MyQueue {
//定义两个栈
Stack<Integer> stack1;
Stack<Integer> stack2;
public MyQueue() {
stack1 = new Stack<>();
stack2 = new Stack<>();
}
//入队方法
public void push(int x){
//1.将stack1中的弹出压入stack2中
while (!stack1.isEmpty()){
stack2.push(stack1.pop());
}
//2.将新元素压入stack1
stack1.push(x);
//3.将stack2中的元素弹出压入stack1
while (!stack2.isEmpty()){
stack1.push(stack2.pop());
}
}
//出队方法
public int pop(){
return stack1.pop();
}
//获取队首元素方法
public int peek(){
return stack1.peek();
}
//判空
public boolean empty(){
return stack1.isEmpty();
}
}
============================================================================================
import java.util.Stack;
//用两个栈实现
public class MyQueue2 {
//定义两个栈
Stack<Integer> stack1;
Stack<Integer> stack2;
public MyQueue2() {
stack1 = new Stack<>();
stack2 = new Stack<>();
}
//入队方法
public void push(int x){
stack1.push(x);
}
//出队方法
public int pop(){
//1.如果stack2为空,则把 stack1中的弹出压入
if(stack2.isEmpty()){
while (!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
//2.弹出stack2栈顶元素就行
return stack2.pop();
}
//获取队首元素方法
public int peek(){
//1.如果stack2为空,则把 stack1中的弹出压入
if(stack2.isEmpty()){
while (!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
//2.返回stack2栈顶元素就行
return stack2.peek();
}
//判空
public boolean empty(){
return stack1.isEmpty()&&stack2.isEmpty();
}
}