zoukankan      html  css  js  c++  java
  • Algs4-1.3.44文本编辑器的缓冲区

    1.3.44文本编辑器的缓冲区。为文本编辑器的缓冲区设计一种数据类型并实现表1.3.13中的API.
    表1.3.13文本缓冲区的API:
    public class Buffer
                Buffer//创建一块空缓冲区
               void insert(char c)//光标位置插入字符c
               char delete()//删除并返回光标位置的字符
               void left(int k)//将光标向左移动k个位置
               void right(int k)//将光标向右移动k个位置
               int size()//缓冲区中的字符数量
    提示:使用两个栈。
    答:

    图片

    图片


    public class Buffer
    {
        private Stack<Character> stackMain;
        private Stack<Character> stackAssist;
        public Buffer()
        {
            stackMain=new Stack<Character>();
            stackAssist=new Stack<Character>();
        }
       
        public void insert(char c)
        {
            stackMain.push(c);
        }
       
        public char delete()
        {
            return stackMain.pop();
        }
       
        public void left(int k)
        {
            while(k>0)
            {
                stackAssist.push(stackMain.pop());
                k--;
            }
        }
       
        public void right(int k)
        {
            while(k>0)
            {
               stackMain.push(stackAssist.pop());
               k--;
            }
        }
       
        public int size()
        {
            return stackMain.size()+stackAssist.size();
        }
       
        public void showSize()
        {
            StdOut.println("StackMain size="+stackMain.size());
            StdOut.println("StackAssist size="+stackAssist.size());
        }
        public void showAll()
        {
            StdOut.println("StackMain is:");
            for(Character i:stackMain)
                StdOut.print(i);
            //
            StdOut.println();
            StdOut.println("StackAssist is:");
            for(Character i:stackAssist)
                StdOut.print(i);
        }
       
        public static void main(String[] args)
        {
            Buffer b=new Buffer();
            while(!StdIn.isEmpty())
            {
                char item=StdIn.readChar();
                b.insert(item);
            }
                
            //
            b.showSize(); 
            StdOut.println("Buffer is:");
            b.showAll();
            //
            StdOut.println("-------");
            b.left(2);
            b.showSize();
            StdOut.println("after Buffer left 2,Buffer is:");
            b.showAll();
            //
            StdOut.println("-------");
            b.right(2);
            b.showSize();
            StdOut.println("after Buffer right 2,Buffer is:");
            b.showAll();
        }
    }
  • 相关阅读:
    FastDfs安装
    groovy学习(二)
    jenkins(一)jenkins使用教程
    jenkins(二)Pipeline语法速成
    groovy学习(一)
    Docker笔记(一)
    运维笔记(一)
    Maven管理(一)
    工厂模式案例与理解
    python 探測端口
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854337.html
Copyright © 2011-2022 走看看