Skip to content

2.1 问题:单行编辑器

这一章介绍第一种抽象数据类型——线性表,并用它一步一步实现第1章提到的单行编辑器。

先看清楚要做的东西。单行编辑器就是一行可以编辑的文字,比如屏幕上显示着:

I love ba|nanas

竖线是光标。用户可以做的事情很少:敲一个字符,它插入到光标处;按退格键,删掉光标前的字符;按左右方向键,光标移动。屏幕始终显示当前这一行的全部内容。

用第1章的方法来分析。数据是什么?是这一行里的字符。它们之间是什么关系?每个字符只有一个前面的字符和一个后面的字符,是一对一的线性关系;顺序不能乱,abba是两行不同的文字;字符可以重复,bananas里有三个a。所以这不是集合,而是一个序列。要对它做什么?插入、删除、移动光标、显示。

接下来我们把这个分析写成正式的抽象数据类型。