Usingstackstoimplementqueues题目描述:请只用两个栈实现先进先出队列。队列应该支持一般队列支持的所有操作(push、pop、peek、empty):实现MyQueue类:voidpush(intx)将元素x推到队列的末尾intpop()从队列的开头intpeek()返回队列开头的元素booleanempty()如果队列为空则返回true;否则,返回false解释:你只能使用标准的堆栈操作——也就是说,只有压入顶部、从顶部查看/弹出、大小和为空操作是合法的。您的语言可能不支持堆栈。可以用list或者deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:队列的双栈实现。MyQueue的两个栈分别是inStack和outStack,inStack用于入队,outStack用于出队。几个方法的主要实现逻辑如下:push(intx):将x压入栈中inStack。pop():如果栈outStack不为空,直接从栈中弹出一个;如果outStack为空,那么如果inStack不为空,将inStack的所有元素弹出并压栈outStack,然后从栈中弹出outStack一个,如果inStack也为空,则抛出异常说明队列是空的。peek():如果栈outStack不为空,则返回outStack的栈顶元素;如果outStack为空,则如果inStack不为空,将inStack的所有元素弹出并压入outStack,然后返回outStack的栈顶元素,如果inStack也为空,则抛出队列为空的异常。empty():如果inStack和outStack都为空,则返回true;否则返回真。importjava.util.Stack;publicclassLeetCode_232{publicstaticvoidmain(String[]args){MyQueuemyQueue=newMyQueue();myQueue.push(1);//队列是:[1]myQueue.push(2);//队列是:[1,2](最左边是队列的前面)System.out.println(myQueue.peek()==1);//返回1System.out.println(myQueue.pop()==1);//返回1,队列为[2]System.out.println(myQueue.empty());//返回假}}classMyQueue{privateStack
