线性表-顺序表
public class SequenceList<T> {
public T[] eles;
public int N;
public static void main(String[] args) {
SequenceList<String> s = new SequenceList<>(4);
s.insert("马");
s.insert("王");
s.insert("刘");
s.insert("朱");
s.insert("孙");
//插入
s.insert(2, "测试");
s.delete(3);
//打印所有元素
s.total();
//搜索元素
s.search("孙");
}
//初始化
public SequenceList(int capacity){
this.eles=(T[])new Object[capacity];//强转
this.N =0;
}
//获取所有元素
public boolean total(){
System.out.println("总量: "+N);
for (int i = 0; i < eles.length; i++) {
System.out.print(eles[i] + " ");
}
return true;
}
//数组扩容
public void resize(int newsize){
T[] temp = eles;
eles = (T[]) new Object[newsize];
for (int i = 0; i < N; i++) {
eles[i] = temp[i];
}
}
//获取指定位置
public T get(int i){
return eles[i];
}
//添加元素
public void insert(T t){
//扩容
if (N == eles.length){
resize(2*eles.length);
}
eles[N++] = t;
}
//插入数据t 在第i位置
public void insert( int i,T t){
//扩容
if (N == eles.length){
resize(2*eles.length);
}
N++;
for (int index = N; index > i; index--) {
eles[index]=eles[index-1];
}
eles[i]=t;
}
//删除指定 位置 i 元素,并返回该元素
public T delete(int i){
T current =eles[i];
for (int index = i; index < N; index++) {
eles[index] = eles[index+1];
}
N--;
return current;
}
//查找t元素第一次出现的位置
public void search(T t){
for (int i = 0; i < N; i++) {
if (t == eles[i]){
System.out.println();
System.out.println("item: " + eles[i] +" "+ "index: "+i);
}
}
}
}