每日一题-Day38-使用两个栈实现队列

题目描述

用两个栈实现一个队列队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,del其他货币资金eteHead 操作返回 -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();
}}

题目来自​​力扣​​