使用两个栈实现队列
用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。
队列:先进先出,栈:后进先出。
例如:将 1 2 3 4 5 压入队列中。
(栈顶)
栈1: 5 4 3 2 1
栈2: 1 2 3 4 5
先判断栈2是否为空,如果栈2 和栈1 都是空,则返回-1
如果栈2为空,栈1不为空,则把栈1的数据依次出栈,压入到栈2中。
import java.util.Stack;
public class StackToQueue {
Stack<Integer> stack1,stack2;
public StackToQueue(){
stack1 = new Stack<>();
stack2 = new Stack<>();
}
public void appendTail(int value){ // 在队列尾部插入整数
stack1.push(value);
}
public int deleteHead(){ //在队列头部删除整数,如果没有元素,则返回-1
if(stack2.isEmpty()){
if (stack1.isEmpty()){
return -1;
}
while (!stack1.isEmpty()){
stack2.push(stack1.pop());
}
return stack2.pop();
}
return stack2.pop();
}
public static void main(String[] args) {
StackToQueue obj = new StackToQueue();
obj.appendTail(1);
obj.appendTail(2);
System.out.println(obj.deleteHead());
}
}