1 顺序表的实现
顺序表是基于数组实现的线性表,这里为了通用性,使用了泛型。
// 顺序表
public class SeqList<E> {
private Object[] data; // 直接使用E[]不安全,而且java中不允许new泛型数组
private int length;
private int maxSize;
public SeqList(int maxSize) {
if (maxSize <= 0) {
this.maxSize = 0;
data = null;
} else {
this.maxSize = maxSize;
data = new Object[maxSize]; // 注意: java 中不像 C++ 中有 “new T[]”, 暂时用 Object 代替, 之后强制转换即可
}
length = 0;
}
public void createList(E[] elements) {
if (elements.length > maxSize) return;
length = 0;
for (E e : elements) {
data[length++] = e;
}
}
public int getLength() {
return length;
}
public boolean isEmpty() {
return length <= 0; // 直接写 return length == 0 也行, 下同
}
public boolean isFull() {
return length >= maxSize;
}
public int search(E element) {
for (int i = 0; i < length; i++) {
if (data[i] == element) return i;
}
return -1;
}
public boolean insert(int i, E element) {
if (isFull()) return false;
if (i < 1 || i > length + 1) return false; // 位置不合法
for (int j = length; j >= i; j--) data[j] = data[j - 1];
data