1. 可以对线性表做些什么呢?
- 往线性表末尾插入一个新元素
- 在任意位置插入新元素,比如起始位置,末尾或者元素之间
- 可以删除一个元素
- 可以删除所有元素
- 可以查看任意元素
- 可以测定线性表是否包含一个特定的元素
- 统计线性表中的元素数目
- 可以测定线性表是空的还是满的
- 可以显示线性表中的所有元素
2. 抽象数据类型ADT
抽象数据类型(abstract data type),或称ADT,由同种类型的数据以及在这些数据上的构成。ADT描述其数据,并且规定其操作,不需要指出如何存储数据和如何实现操作。因而,对于ADT的讨论可以独立于语言。
3. remove与replace操作的不同解释
某个应用需要从线性表中删除一个元素,但又想保留该元素留做它用。那么可以使该应用使用getEntry()获得该元素的引用,然后再用remove将它从线性表中删除。也可以将remove的说明修改为返回从线性表中删除的元素的引用。使用这个版本的remove,伪代码语句如下所示:
oldEntry3 = myLIst.remove(3)
同理,replace的说明也可以改为返回被替换对象的引用,因此如果写成:
ref = myList.replace(3,f)
那么ref将会引用原先的元素b。
4. ListInterface接口
/** ADT线性表的接口
* 线性表中的元素位置从1开始
*/
public interface ListInterface
{
/** Task: 往线性表末尾插入新元素
* @param newEntry 作为新元素插入的对象
*/ @return 如果插入成功返回true,否则返回false
public boolean add(Object newEntry);
/** Task: 往线性表中的指定位置插入一个新元素,原本位于指定位置及其上的元素移动到线性表中下一个更高的位置,线性表的大小增加1
* @param newPosition 指定新元素位置的一个整数;newPosition>=1并且newPosition<=getLength()+1
* @param newEntry 作为新元素插入对象
*/ @return 如果插入成功则返回true,否则返回false
public boolean add(int newPosition, Object newEntry);
/** Task: 往线性表中的指定位置删除一个新元素,原本位于指定位置更高位置的元素移动到线性表中下一个的更低的位置,线性表的大小减1
* @param givenPosition 指定删除元素位置的一个整数;givenPosition>=1并且givenPosition<=getLength()
*
*/ @return 如果删除成功则返回true,否则返回false
public Object remove(int givenPosition);
/**Task: 删除线性表中的所有元素*/
public void clear();
/** Task: 替换线性表中的所有指定位置的元素
* @param givenPosition 指定替换元素位置的一个整数;givenPosition>=1并且givenPosition<=getLength()
* @param newEntry 用于替换givenPosition元素位置的对象
*/ @return 如果替换成功则返回true,否则返回false
public boolean replace(int givenPosition, Object newEntry);
/** Task: 检索线性表指定位置上的元素
* @param givenPosition 指定被检索位置上的元素的一个整数;givenPosition>=1并且givenPosition<=getLength()
*/ @return 如果找到指定的线性表元素,返回对它的引用,否则返回null
public Object getEntry(int givenPosition);
/** Task: 确定线性表中是否包含一个给定的元素
* @param anEntry 表示一个待查元素的对象
*/ @return 如果线性表含有anEntry,返回true,否则返回false
public boolean contains(Object anEntry);
/** Task: 确定线性表的长度
* @return 返回线性表中的当前所含元素个数的整数*/
public int getLength();
/** Task: 确定线性表是否为空
* @return 如果线性表为空,返回true,否则返回false*/
public boolean isEmpty();
/** Task: 确定线性表是否为满
* @return 如果线性表为满,返回true,否则返回false*/
public boolean isFull();
/** Task: 按照线性表中的顺序显示线性表中的所有元素。每行一个元素*/
public void display();
}//end ListInterface