Java实现用两个栈实现队列

Java实现用两个栈实现队列,第1张

Java实现用两个栈实现队列

思路:使用stack1来直接存放数据,只有当需要删除数据时才将数据逆序移动到stack2,stack2进行删除。

使用Deque的实现类linkedList,底层是链表,相对于Stack底层是数组来进行添删速度快很多,利用空间换时间。

class CQueue {
    private Deque stack1;
    private Deque stack2;
    public CQueue() {
        stack1 = new linkedList<>();
        stack2 = new linkedList<>();
    }

    public void appendTail(int value) {
        stack1.push(value);
    }

    public int deleteHead() {
        //stack2不为空直接pop出
        if (!stack2.isEmpty()){
            return stack2.pop();
        }else {
            //将stack1的所有元素逆序移动到stack2
            while (!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
        return stack2.isEmpty() ? -1 : stack2.pop();
    }
}

测试类:

public class Test {
    public static void main(String[] args) {
        CQueue queue = new CQueue();
        queue.appendTail(1);
        queue.appendTail(2);
        queue.appendTail(3);
        queue.appendTail(5);
        int i = queue.deleteHead();
        System.out.println(i);
    }
}

结果:

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5563719.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存