• 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();
        }
    }
  • 相关阅读:
    JavaScript-5(数组)
    JavaScript-作用域-预解析
    JavaScript-日历生成器
    JavaScript-8行5列表格
    package XXX.i386.rpm is not installed(检查在Linux上安装Oracle所需的pkg时)
    ubuntu13.04下安装jdk7
    Linux远程传输命令之scp使用方法
    Mac OS X中MacPorts安装和使用
    第一天 Linux 是什么
    Javascript与当前项目的思考
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854337.html
Copyright © 2020-2023  润新知