算法 1.3.44 文本编辑器的缓冲区
来源:互联网 发布:网络投资赚钱 编辑:程序博客网 时间:2024/04/29 16:42
package Cap1;import java.util.Iterator;import edu.princeton.cs.introcs.StdOut;public class Buffer implements Iterable{Stack<Character> front = new Stack<Character>(); // 光标前面的Stack<Character> after = new Stack<Character>(); // 光标后面的public int size(){ return front.size() + after.size(); }public void insert(char c){front.push(c);}public char delete(){char ans = front.pop();return ans;}public void left(int k){if(k>=front.size()) return;for(int i=0;i<k;i++)after.push(front.pop());}public void right(int k){if(k>after.size()) return;for(int i=0;i<k;i++)front.push(after.pop());}@Overridepublic Iterator iterator() {// TODO Auto-generated method stubreturn new BufferIterator();}private class BufferIterator implements Iterator{Iterator<Character> it;public BufferIterator(){Stack<Character> afterTemp = Stack.copy(after);for(Character c:front)afterTemp.push(c);it = afterTemp.iterator();}@Overridepublic boolean hasNext() {// TODO Auto-generated method stubreturn it.hasNext();}@Overridepublic Character next() {// TODO Auto-generated method stubreturn it.next();}@Overridepublic void remove() {// TODO Auto-generated method stub}}public static void main(String[] args) {// TODO Auto-generated method stubBuffer b = new Buffer();String s = "Hellow word!";for(int i=0;i<s.length();i++){b.insert(s.charAt(i));}for(Object c:b)StdOut.print(c);StdOut.println();b.left(6);b.delete();for(Object c:b)StdOut.print(c);StdOut.println();b.right(4);b.insert('l');for(Object c:b)StdOut.print(c);StdOut.println();}}
Hellow word!Hello word!Hello world!
阅读全文
0 0
- 算法 1.3.44 文本编辑器的缓冲区
- 小的文本编辑器
- 文本编辑器的代码
- Dojo 的文本编辑器
- 简单的文本编辑器
- 文本编辑器的选择
- 简单的文本编辑器
- Linux的文本编辑器
- 好的文本编辑器
- python的文本编辑器
- 更改sqlplus缓冲区的默认编辑器
- ewebeditor文本编辑器的使用。
- 简单的文本编辑器做法
- CTeX:专业的“文本编辑器”
- flash 文本编辑器的制作
- 最好的五个文本编辑器
- 最好的五个文本编辑器
- Delphi文本编辑器的设计
- Java日期时间处理
- nvm-windows管理安装nodejs版本
- 多线程与网络
- Netty 处理Tcp Http Udp
- 【Java多线程 锁优化】锁的三种状态切换
- 算法 1.3.44 文本编辑器的缓冲区
- 17年9月Java软件工程师面试第一站
- osg 节点坐标的获取
- 免安装版MySQL相关配置安装详解
- 机器学习第十二课(距离,K-means,聚类衡量指标)
- 数学建模--图与网络(2)
- java中 如何获取一个日期是星期几
- minSDK 和 targetSDK
- WNDCLASSEX结构赋值问题