园林绿化网站建设,网络项目,江苏网站seo营销模板,长沙 服务请你仅使用两个队列实现一个后入先出#xff08;LIFO#xff09;的栈#xff0c;并支持普通栈的全部四种操作#xff08;push、top、pop 和 empty#xff09;。实现 MyStack 类#xff1a;void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() …请你仅使用两个队列实现一个后入先出LIFO的栈并支持普通栈的全部四种操作push、top、pop 和 empty。实现 MyStack 类void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的返回 true 否则返回 false 。 注意1、你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。2、你所使用的语言也许不支持队列。 你可以使用 list 列表或者 deque双端队列来模拟一个队列 , 只要是标准的队列操作即可。 示例输入[MyStack, push, push, top, pop, empty][[], [1], [2], [], [], []]输出[null, null, null, 2, 2, false]解释MyStack myStack new MyStack();myStack.push(1);myStack.push(2);myStack.top(); // 返回 2myStack.pop(); // 返回 2myStack.empty(); // 返回 False 提示1、1 x 92、最多调用100 次 push、pop、top 和 empty3、每次调用 pop 和 top 都保证栈不为空思路empty方法new两个队列如果两个队列均为空则栈为空push方法向不空的队列放元素一开始默认向第一个队列放pop方法若第一个队列有n个元素则弹出一个元素进入队列2重复n-1次队列1最后剩下的元素就是需要弹出的元素top方法pop方法剩下的最后一个元素返回之后将其弹出再放入另一个队列代码class MyStack {private QueueInteger qu1;private QueueInteger qu2;public MyStack() {qu1new LinkedList();qu2new LinkedList();}public void push(int x) {if(!qu1.isEmpty()){qu1.offer(x);}else if(!qu2.isEmpty()){qu2.offer(x);}else{qu1.offer(x);}}public int pop() {if(empty()){return -1;}if(!qu1.isEmpty()){int sizequ1.size();for(int i0;isize-1;i){int xqu1.poll();qu2.offer(x);}return qu1.poll();}else{int sizequ2.size();for(int i0;isize-1;i){int xqu2.poll();qu1.offer(x);}return qu2.poll();}}public int top() {if(empty()){return -1;}if(!qu1.isEmpty()){int x-1;int sizequ1.size();for(int i0;isize;i){xqu1.poll();qu2.offer(x);}return x;}else{int x-1;int sizequ2.size();for(int i0;isize;i){xqu2.poll();qu1.offer(x);}return x;}}public boolean empty() {if(qu1.isEmpty()qu2.isEmpty()){return true;}return false;}
}