zoukankan      html  css  js  c++  java
  • 剑指offer第二版-9.用两个栈实现队列

    描述:使用两个栈实现一个队列。队列中实现尾部插入和头部删除函数。

    思路:stack1负责插入,stack2负责弹出,如果stack2为空了,将stack1的元素依次弹出并存放到stack2中,之后对stack2进行弹出操作。

    考点:对栈和队列的理解;对泛型的使用等。

    /**
     * Copyright(C) 2019 Hangzhou Differsoft Co., Ltd. All rights reserved.
     *
     */
    package com.java.offer;
    
    import java.util.Stack;
    
    /**
     * 用两个栈实现队列
     * 
     * @since 2019年2月25日 下午5:21:48
     * @author xuchao
     *
     */
    public class P9_QueueWithTwoStacks {
    
        public static void main(String[] args) {
            Queue<Integer> queue = new Queue<>();
            queue.insert(1);
            queue.insert(2);
            queue.insert(3);
            System.out.println(queue.delete());
            System.out.println(queue.delete());
            queue.insert(4);
            System.out.println(queue.delete());
        }
    }
    
    class Queue<T> {
        private Stack<T> stack1 = new Stack<>();
        private Stack<T> stack2 = new Stack<>();
    
        public void insert(T data) {
            stack1.push(data);
        }
        
        public T delete() {
            if (!stack2.isEmpty()) {
                return stack2.pop();
            }else if(!stack1.isEmpty()) {
                while(!stack1.isEmpty()) {
                    stack2.push(stack1.pop());
                }
                return stack2.pop();
            }
            return null;
        }
    }
  • 相关阅读:
    Python pip命令
    Linux extundelete命令
    Ruby Gem命令
    RPM包制作方法
    Openssl genpkey命令
    Linux ssldump命令
    openssl 证书操作命令
    Linux下使用openssl生成证书
    Volley框架载入网络图片
    Gmail上不去怎么办?
  • 原文地址:https://www.cnblogs.com/chao-zjj/p/10436356.html
Copyright © 2011-2022 走看看