顺序表
首先定义一个抽象类,包括两个方面:数据集合和该数据集合上的操作集合。线性表常见操作有插入、删除、查找、获取元素值、设置元素值等,在java语言中,抽象数据类型通常设计成接口。线性表抽象类型的java接口可声明如下:
//线性表抽象数据类型
public interface LinearList<Student> {
public Student get(int i);//返回下标为i的元素
public void set(int i,Student t);//用指定元素t替换列表中指定位置i的元素
public int insert(Student t);//在线性表的最后插入元素t,返回t序号
public int insert(int i,Student t);//在线性表的位置i处插入元素t,返回t序号
public Student remove(int i);//删除下标为i的元素,返回被删除的元素
public boolean contains(Student key);//判断线性表中是否包含key元素
public void indexOf(int i); //在线性表查找首次出现的与key相等元素,返回元素位置,若不存在,则返回-1
public int size();//返回线性表的长度
public void clear();//清空线性表
public boolean isEmpty();//判断线性表是否为空
public void printList(); //遍历顺序表所有元素
}
顺序表类声明、构造方法、存取操作实现
声明顺序表SeqList,实现线性表接口LinearList,顺序表包含2个保护成员变量data和n。其中,data数组存放顺序表中的数据元素,元素类型用泛型T表示;n为顺序表中的元素个数(顺序表长度)。
//顺序表类
public class SeqList implements LinearList<Student>{
protected Student[] data; //对象数组存储顺序表的数据元素
protected int n; //顺序表数据元素个数(长度)
public SeqList(int length){ //构造容量为length的空表
this.data=new Student[length];//创建长度为length的数组,元素均为null
this.n=0; //空表长度为0
}
public SeqList(Student[] values){ //由values数组构造顺序表
this(values.length); //创建容量为values