顺序表类
package sequence.demo;
//线性表
public class SequenceList {
private Object[] dataArr = new Object[10];
private final int length;
private int size = 0;
public SequenceList(int length) {
this.dataArr = new Object[length];
this.length = length;
}
public SequenceList() {
this.dataArr = new Object[10];
this.length = 10;
}
// 添加一个元素
public void add(String value) {
if (size > length) {
System.out.println();
System.err.println("顺序表已满");
} else if (size <= length) {
dataArr[size] = value;
size++;
}
}
// 获取装载数
public Integer size() {
return size;
}
// 通过下标获取一个元素
public String get(Integer index) {
if (index > (size - 1)) {
System.out.println();
System.err.println("超出以装载数据范围");
} else if (index < 0) {
System.out.println();
System.err.println("超出以装载数据范围");
}
return (String) dataArr[index];
}
// 将元素插入指定位置
public void add(Integer index, String value) {
if (index > (size - 1)) {
System.out.println();
System.err.println("超出以装载数据范围");
} else if (index < 0) {
System.out.println();
System.err.println("超出以装载数据范围");
}
// 指定下标位置以及后面的元素往后移
for (int i = index; i < size; i++) {
dataArr[i + 1] = dataArr[i];
}
dataArr[index] = value;
// 将多余对象变为null,让gc回收
size++;
}
// 通过下标删除一个元素
public void remove(Integer index) {
if (index > (size - 1)) {
System.out.println();
System.err.println("超出以装载数据范围");
} else if (index < 0) {
System.out.println();
System.err.println("超出以装载数据范围");
}
// 往0下标方向移动,替换删除的数
for (int i = index; i < size; i++) {
dataArr[i] = dataArr[i + 1];
}
// 将多余对象变为null,让gc回收
dataArr[size - 1] = null;
size--;
}
// 通过元素删除自己
public void remove(String value) {
// 往0下标方向移动,替换删除的数
for (int i = 0, j = 0; i < size; i++, j++) {
if (dataArr[i].equals(value)) {
j += 1;
}
dataArr[i] = dataArr[j];
}
// 将多余对象变为null,让gc回收
dataArr[size - 1] = null;
size--;
}
}
执行类
package sequence.demo;
public class Main {
public static void main(String[] args) {
String stemp;
Integer itemp;
SequenceList sl = new SequenceList();
System.out.println("sl.add(\"a\");");
sl.add("a");
itemp = sl.size();
System.out.println("sl.size(): " + itemp);
// stemp = sl.get(1);
// System.out.println("sl.get(1): " + stemp);
stemp = sl.get(0);
System.out.println("sl.get(0): " + stemp);
sl.add(0, "aa");
System.out.println("sl.add(0, \"aa\");");
stemp = sl.get(0);
System.out.println("sl.get(0): " + stemp);
sl.add("b");
System.out.println("sl.add(\"b\");");
stemp = sl.get(1);
System.out.println("sl.get(1): " + stemp);
stemp = sl.get(2);
System.out.println("sl.get(2): " + stemp);
itemp = sl.size();
System.out.println("sl.size(): " + itemp);
System.out.println("sl.remove(0);");
sl.remove(0);
stemp = sl.get(0);
System.out.println("sl.get(0): " + stemp);
itemp = sl.size();
System.out.println("sl.size(): " + itemp);
sl.remove("b");
System.out.println("sl.remove(\"b\");");
itemp = sl.size();
System.out.println("sl.size(): " + itemp);
}
}
执行结果
package sequence.demo;
public class Main {
public static void main(String[] args) {
String stemp;
Integer itemp;
SequenceList sl = new SequenceList();
System.out.println("sl.add(\"a\");");
sl.add("a");
itemp = sl.size();
System.out.println("sl.size(): " + itemp);
// stemp = sl.get(1);
// System.out.println("sl.get(1): " + stemp);
stemp = sl.get(0);
System.out.println("sl.get(0): " + stemp);
sl.add(0, "aa");
System.out.println("sl.add(0, \"aa\");");
stemp = sl.get(0);
System.out.println("sl.get(0): " + stemp);
sl.add("b");
System.out.println("sl.add(\"b\");");
stemp = sl.get(1);
System.out.println("sl.get(1): " + stemp);
stemp = sl.get(2);
System.out.println("sl.get(2): " + stemp);
itemp = sl.size();
System.out.println("sl.size(): " + itemp);
System.out.println("sl.remove(0);");
sl.remove(0);
stemp = sl.get(0);
System.out.println("sl.get(0): " + stemp);
itemp = sl.size();
System.out.println("sl.size(): " + itemp);
sl.remove("b");
System.out.println("sl.remove(\"b\");");
itemp = sl.size();
System.out.println("sl.size(): " + itemp);
}
}