//线性表之顺序表(ArrayList就是如此实现)
public class SequenceList<T> {//<>为泛型
//存储元素的数组
private T[] eles;
//顺序表元素个数
private int N;
//初始化一个数组
public SequenceList(int capacity){
this.eles=(T[]) new Object[capacity]; //java中,Object类是所有类的父类
this.N=0;
System.out.println("构建了一个线性表");
}
//判断线性表是否为空
boolean isEmapy(){
return N==0;
}
public int getLength(){
return N;
}
public T get(int i){
return eles[i];
}
//在尾部新增元素
public void insert(T t){
if (N==eles.length) {
reSize(2*N);
}
eles[N++]=t;
}
//在中间插入元素,时间复杂度O(n)
public void insert(int i,T t){
if (N==eles.length) {
reSize(2*N);
}
for (int a=N;a>i;a--){
eles[a]=eles[a-1];
}
eles[i]=t;
}
//移除i位置的元素并返回元素值,时间复杂度O(1)
public T remove(int i){
if (N<eles.length/2) {
reSize(N/2);
}
T t=eles[i];
for (int a=i;N-1>a;a++){
eles[a]=eles[a+1];
N=N-1;
}
return t;
}
//返回t元素第一次出现的下标
public int indexOf(T t){
int num=0;
for (;num<=N-1;num++){
if (eles[num].equals(t))
break;
}
return num;
}
//更改线性表长度:
private void reSize(int newLength){
int i=0;
T[] temp=eles;
eles=(T[])new Object[newLength];
for (T s:temp){
eles[i++]=s;
}
}
//输出顺序表内容
public void out(){
if (N>0)
for (T ele : eles) {
System.out.println(ele);
}
}
}
Java顺序表实现
最新推荐文章于 2024-07-27 13:31:57 发布