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();
        }
    }
  • 相关阅读:
    Hdu 1257 最少拦截系统
    Hdu 1404 Digital Deletions
    Hdu 1079 Calendar Game
    Hdu 1158 Employment Planning(DP)
    Hdu 1116 Play on Words
    Hdu 1258 Sum It Up
    Hdu 1175 连连看(DFS)
    Hdu 3635 Dragon Balls (并查集)
    Hdu 1829 A Bug's Life
    Hdu 1181 变形课
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854337.html
Copyright © 2011-2022 走看看