zoukankan      html  css  js  c++  java
  • Algs4-1.3.48双向队列与栈

    1.3.48双向队列与栈。用一个双向队列实现两个栈,保证每个栈操作只需要常数次的双向队列操作(请见练习1.3.33)。
    答:
    图片
    public class StackDouble<Item>
    {
        private Deque<Item> q=new Deque<Item>();
        ///////////Stack of Left
        private int NLeft=0;
        public boolean isEmptyLeft()
        {return NLeft==0;}
       
        public int sizeLeft()
        {return NLeft;}
       
        public void pushLeft(Item item)
        {
            q.pushLeft(item);
            NLeft++;
        }
       
        public Item popLeft()
        {
           if (NLeft==0) return null;
            Item item=q.popLeft();
            NLeft--;
            return item;
        }
        ///////////Stack of Right
        private int NRight=0;
        public boolean isEmptyRight()
        {return NRight==0;}
       
        public int sizeRight()
        {return NRight;}
       
        public void pushRight(Item item)
        {
            q.pushRight(item);
            NRight++;
        }
       
        public Item popRight()
        {
            if(NRight==0) return null;
            Item item=q.popRight();
            NRight--;
            return item;
        }
       
        public static void main(String[] args)
        {
            StackDouble<String> s=new StackDouble<String>();
            s.pushLeft("1");
            s.pushLeft("2");
            s.pushLeft("3");
            //
            s.pushRight("4");
            s.pushRight("5");
            s.pushRight("6");
            StdOut.println("Stack of Left size is:"+s.sizeLeft());
            StdOut.println("Stack of Right size is:"+s.sizeRight());
            //
            StdOut.println("Stack of Left element is:");
            for(int i=0;i<7;i++)
                StdOut.print(s.popLeft()+" ");
            //
            StdOut.println();
            StdOut.println("Stack of Right element is:");
            for(int i=0;i<7;i++)
                StdOut.print(s.popRight()+ " ");
        }
    }
  • 相关阅读:
    Linux 常用命令
    公钥,私钥和数字签名
    MySQL中的datetime与timestamp比较
    SQL开发技巧
    socket心跳包机制
    vue 路由回退,实现刷新原页面数据
    HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
    Xshell常用命令
    学习Dart flutter --1
    学习JavaScript数据结构与算法(第2版)--01
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854347.html
Copyright © 2011-2022 走看看