两个栈实现一个队列

在 Java 中使用两个 Stack 实现 一个 Queue:

package com.test;
import java.util.Stack;

/**
 * 用途:
 * 开发:zhangmj
 * 日期:2018/12/3 15:41
 */
public class Queue<T> {

    /**
     *  队列: 先进先出
     *   栈:  先进后出
     */
    private Stack<T> stack_one = new Stack<T>();
    private Stack<T> stack_two = new Stack<T>();

    // one  1  2  4  5
    public void push(T item){
        stack_one.push(item);
    }

    public T pop(){
        if(stack_two.empty()){
            int size = 5;
            if(stack_one.size() < 10){
                size = stack_one.size();
            }
            for (int i = 0; i < size ; i++) {
                stack_two.push(stack_one.pop());
            }
        }
       return stack_two.pop();
    }

    public boolean isNext(){
        if(stack_one.empty() && stack_two.empty()){
            return false;
        }
        return true;
    }

    public static void main(String[] args) {
        Queue queue = new Queue();
        queue.push(1);
        queue.push(2);
        queue.push(3);
        queue.push(4);
        queue.push(5);
        queue.push(6);
        queue.push(7);
       while(queue.isNext()){
           System.out.println(queue.pop());
       }
        queue.push(8);
        queue.push(9);
        queue.push(10);
        queue.push(11);
        while(queue.isNext()){
            System.out.println(queue.pop());
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值