zoukankan      html  css  js  c++  java
  • Algs4-1.4.30一个栈和一个steque实现的双向队列

    1.4.30一个栈和一个steque实现的双向队列。使用一个栈和steque实现一个双向队列(请见练习1.3.32),使得双向队列的每个操作所需的栈和steque操作均摊后为一个常数。
    答:
    图片
    public class E1d4d30<Item>
    {
        Stack<Item> s=new Stack<Item>();
        Steque<Item> ste=new Steque<Item>();
        public boolean isEmpty()
        {
            return s.isEmpty() && ste.isEmpty();
        }
       
        public int size()
        {
            return s.size()+ste.size();
        }
       
        public void pushLeft(Item item)
        {
            ste.push(item);
        }
       
        public Item popLeft()
        {
           
     if(s.isEmpty())
              while(!ste.isEmpty())
                  s.push(ste.pop());
            //
            Item item=s.pop();
            return item;
        }
       
        public void pushRight(Item item)
        {
            ste.push(item);
        }
       
        public Item popRight()
        {
            if(ste.isEmpty())
                while(!s.isEmpty())
                   ste.push(s.pop());
           return  ste.pop();
        }
       
       
        public static void main(String[] args)
        {
            E1d4d30<String> d=new E1d4d30<String>();
            StdOut.printf("Deque is empty:%s ",d.isEmpty());
            d.pushLeft("1");
            StdOut.printf("Deque size is:%d ",d.size());
            d.pushRight("2");
            StdOut.printf("Deque size is:%d ",d.size());
            StdOut.printf("popLeft is:%s ",d.popLeft());
            StdOut.printf("popLeft is:%s ",d.popLeft());
            //
            d.pushLeft("1");
            d.pushRight("2");
            d.pushRight("3");
            StdOut.printf("popLeft is %s ",d.popLeft());
            StdOut.printf("popRight is %s ",d.popRight());
        }
     }


  • 相关阅读:
    svg使用
    人生是 立体, 不是平面, 股票大作手不太好的结局
    react 管理平台
    首页性能优化
    vue 安装插件
    python中如何对list之间求交集,并集和差集
    Java中String直接复制和new String创建对象的区别以及equals和==的区别和效率对比
    关于二叉树的总结
    Postgresql 数据库,如何进行数据备份以及导入到另外的数据库
    Java List详解,面试中应该如何解答关于List的问题
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854496.html
Copyright © 2011-2022 走看看