线性表——顺序表
编写一个顺序表源码
public class SequenceList<T> implement Iterable<T>{
private T[] eles;
private int N;
}
public SequenceList(int capacity){
this.eles = new (T[])new Object[capacity];
this.N = 0;
}
public void clear(){
this.N = 0;
}
public boolean isEmpty(){
return N == 0;
}
public int length(){
return N ;
}
public T get(int i){
return eles[i];
}
public void insert(T t){
if (N== eles.lenght){
resize(eles.length*2)
}
eles[N++] = t;
}
public void insert( int i , T t){
if (N== eles.lenght){
resize(eles.length*2)
}
for(int index = N;index>i;index--){
eles[index] = eles[index-1];
}
eles[i] = t;
N++;
}
public T remove(int i ){
T current = eles[i];
for(int index=i;index<N; index ++){
eles[index] = eles[index+1];
}
N--;
if (N< eles.length/4){
resize(eles.length/2)
}
return current;
}
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 int indexof(T t){
for(int i =0;i<N;i++){
if(eles[i].equals(t)){
return i ;
}
}
return -1;
}
@Override
public Iterator<T> iterator{
return new SIterator();
}
private class SIterator implements Iterator{
private int cursor;
public SIterator (){
this.cursor = 0;
}
@Override
public boolean hasNext(){
return cusor<N;
}
@Override
public object next(){
return eles[cursor++];
}
}
}