每日一题-Day38-使用两个栈实现队列
题目描述
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
思路
栈的特点为先进后出,队列的特点为先进先出,当我们使用两个栈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();
}}
题目来自力扣