classMyStack{Queue<Integer> queue ;//复用队列publicMyStack(){queue =newLinkedList<>();}publicvoidpush(int x){queue.add(x);}publicintpop(){//出栈 其实就是将队列最后一个元素弹出去 所以我们可以将除了最后一个元素的其他元素依次弹出再加入队列queuefz();return queue.poll();}publicinttop(){queuefz();int result = queue.poll();//将队首元素弹出得到栈顶元素queue.add(result);//再将元素加入队尾,还原状态return result;}publicbooleanempty(){return queue.isEmpty();}publicvoidqueuefz(){//将队列中的栈顶元素放到队首int size = queue.size();for(int i = size ; i >1; i--){int out = queue.poll();queue.add(out);}}}/*** Your MyStack object will be instantiated and called as such:* MyStack obj = new MyStack();* obj.push(x);* int param_2 = obj.pop();* int param_3 = obj.top();* boolean param_4 = obj.empty();*/