题目链接
https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/
队列的功能是先进先出,栈的功能是先进后出。一个栈是绝对无法实现队列功能的,而我们用两个栈,可以实现一个栈A先存入数据,然后数据出栈存入另外一个栈B,这样栈A的栈底就变成了栈B的栈顶,实现了队列的先进先出的功能。
栈A实现加入队尾,栈B实现删除队首。
代码如下:
class CQueue {
LinkedList<Integer> A,B;
//初始化两个栈
public CQueue() {
A = new LinkedList<>();
B = new LinkedList<>();
}
//加入队尾
public void appendTail(int value) {
A.addLast(value);
}
//删除队首
public int deleteHead() {
if(!B.isEmpty()) return B.removeLast();
if(A.isEmpty()) return -1;
while(!A.isEmpty()){
B.addLast(A.removeLast());
}
return B.removeLast();
}
}