数据结构顺序表类
public class SeqList < T > extends Object {
protected int n;
protected Object [ ] element;
private static final int MIN_CAPACITY= 16 ;
public SeqList ( int length) {
if ( length< MIN_CAPACITY)
length= MIN_CAPACITY;
this . element= new Object [ length] ;
this . n= 0 ;
}
public SeqList ( ) {
this ( MIN_CAPACITY) ;
}
public SeqList ( T [ ] values) {
this ( values. length* 2 ) ;
for ( int i= 0 ; i< values. length; i++ ) {
if ( values[ i] != null )
element[ n++ ] = values[ i] ;
}
}
public boolean isEmpty ( ) {
return n== 0 ;
}
public int size ( ) {
return n;
}
public T get ( int i) {
if ( i>= 0 && i< n) {
return ( T ) element[ i] ;
}
return null ;
}
public void set ( int i, T x) {
if ( x== null )
throw new NullPointerException ( "x==null" ) ;
if ( i>= 0 && i< n)
element[ i] = x;
else
throw new IndexOutOfBoundsException ( ) ;
}
public String toString ( ) {
String str= this . getClass ( ) . getName ( ) + "(" ;
if ( this . n> 0 )
str += element[ 0 ] . toString ( ) ;
for ( int i= 1 ; i< n; i++ ) {
str += ", " + element[ i] . toString ( ) ;
}
return str + ")" ;
}
public int insert ( int i, T x) {
if ( x== null )
return - 1 ;
if ( i< 0 )
i= 0 ;
if ( i> n)
i= n;
Object [ ] source= element;
if ( n== element. length) {
element = new Object [ source. length * 2 ] ;
for ( int j = 0 ; j < i; j++ ) {
this . element[ j] = source[ j] ;
}
}
for ( int j= n- 1 ; j>= i; j-- ) {
element[ j+ 1 ] = source[ j] ;
}
element[ i] = x;
n++ ;
return i;
}
public int insert ( T x) {
return insert ( n, x) ;
}
public T remove ( int i) {
if ( i>= 0 && i< n) {
T x= ( T ) element[ i] ;
for ( int j= i; j< n- 1 ; j++ ) {
element[ j] = element[ j+ 1 ] ;
}
element[ n- 1 ] = null ;
n-- ;
return x;
}
return null ;
}
public void clear ( ) {
n= 0 ;
}
public int search ( T key) {
for ( int i= 0 ; i< n; i++ )
if ( key. equals ( element[ i] ) )
return i;
return - 1 ;
}
public boolean equals ( Object obj) {
if ( this == obj)
return true ;
if ( obj instanceof SeqList < ? > ) {
SeqList < T > list= ( SeqList < T > ) obj;
if ( this . n== list. n) {
for ( int i= 0 ; i< this . n; i++ )
if ( ! this . element[ i] . equals ( list. element[ i] ) )
return false ;
return true ;
}
}
return false ;
}
}