java 用队列实现栈

由于之前没有这个意识,现在做题时会写上随笔和思路
https://leetcode.cn/problems/implement-stack-using-queues/ 题目链接
首先我们用两个队列来实现
根据队列先进先出的一个特征,创建两个链表queue1和queue2后,用push来加到queue1里面;

点击查看代码
public void push(int x) {
               queue1.offer(x);
        }
pop方法需要先判断queue1是否为空 将queue1的参数放到queue2里面直到queue里只有一位,就对应的时栈的栈顶元素 之后再将queue2的元素放进queue1里就行了,这是在返回栈顶元素
点击查看代码
public int pop() {
                if (queue1.isEmpty() == true) {
                        return -1;
                }
                while (queue1.size() != 1) {
                        queue2.offer(queue1.poll());
                }
                while (queue2.isEmpty() != true) {
                        queue1.offer(queue2.poll());

                }
                return queue1.poll();
        }

top和上面代码差不多就是不对queue1移除栈顶就行了

点击查看代码
public int top() {
                if (queue1.isEmpty() == true) {
                        return -1;
                }
                while (queue1.size() != 1) {
                        queue2.offer(queue1.poll());
                }
                int x = queue1.peek();
                queue2.offer(queue1.poll());
                while (queue2.isEmpty() != true) {
                        queue1.offer(queue2.poll());
                }
                return x;
        }
empty就更简单了,看queue1的size是不是0
点击查看代码
 public boolean empty() {
                if(queue1.size() == 0){
                        return true;
                }else {
                        return false;
                }
        }
那么用两个队列实现栈就结束了
posted @ 2026-02-03 20:15  alexacaily36  阅读(1)  评论(0)    收藏  举报