《剑指 offer》用两个栈实现队列-Java

题目描述

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

解题思路

    栈操作的特点是“先进后出”,队列的特点是“先进先出”。现在要用栈来模仿队列的操作。此题借助两个栈(stack1、stack2)来实现队列的入队和出队操作。

    (1)入队: 假设元素入栈的时候,默认到stack1,则不对stack2进行操作。

    (2)出队:需要借助stack2进行中转,首先判断栈stack2是否为空,如果为空,则先把stack1中的所有元素倒入stack2,然后stack2进行一次出栈操作,然后再把stack2中的所有元素倒入stack1,即完成一次出队操作;若stack2不为空,则直接进行出栈(即出队)操作。

实现代码

public class 两个栈实现队列 {

    static Stack<Integer> stack1 = new Stack<Integer>();

    Stack<Integer> stack2 = new Stack<Integer>();



    public void push(int node) {

        stack1.push(node);

    }



    public int pop() {

        int val = 0;

        if(!stack2.isEmpty()) {

           val = stack2.pop();

        }else {

            while(!stack1.isEmpty()) {

                stack2.push(stack1.pop());

            }

            val = stack2.pop();

        }

        return val;

    }



    public static void main(String[] args) {

        stack1.push(1);

        stack1.push(2);

        stack1.push(3);

        System.out.println(stack1.pop());

    }

}

    两个队列实现栈:https://blog.csdn.net/u011328417/article/details/79436120?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值