Java数据结构–线性表
线性表类
public class SequenceList<T> implements Iterable
{
private final int DEFAULTCAPACITY=8099;
private int capacity;
private T[] table;
private int length;
SequenceList(){
new SequenceList<T>(DEFAULTCAPACITY);
}
SequenceList(int capacity) {
this.capacity=capacity;
this.table=(T[])new Object[capacity];
this.length=0;
}
public void clear(){
this.length=0;
}
public boolean isEmpty(){
return length==0;
}
public int length(){
return length;
}
public T get(int i){
return table[i];
}
public void resize(int newsize)
{
T temp[]=table;
table=(T[]) new Object[newsize];
for(int i=0;i<length;i++)
{
table[i]=temp[i];
}
}
public void insert(int i,T t){
if(length==table.length)
{
resize(table.length*2);
}
for(int index=length;index>i;index--)
{
table[index]=table[index-1];
}
table[i]=t;
length++;
}
public void insert(T t){
if(length==table.length)
{
resize(table.length*2);
}
table[length++]=t;
}
public T remove(int i){
T oldValue=table[i];
for(int index=i;i<length;index++)
{
table[index]=table[index+1];
}
length--;
if(length<table.length/4)
{
resize(table.length/2);
}
return oldValue;
}
public int indexOf(T t){
for(int index=0;index<length;index++)
{
if(table[index].equals(t))
{
return index;
}
}
return -1;
};
@Override
public Iterator<T> iterator() {
return new SIterator();
}
private class SIterator implements Iterator
{
private int point;
public SIterator()
{
point=0;
}
@Override
public boolean hasNext() {
return point<length;
}
@Override
public Object next() {
return table[point++];
}
}
}
测试类
public class SequenceListTest
{
public static void main(String[] args) {
SequenceList<String> stringSequenceList = new SequenceList<String>(20);
stringSequenceList.insert("app");
stringSequenceList.insert("app");
stringSequenceList.insert("app");
stringSequenceList.insert(1,"acpp");
for(Object s:stringSequenceList)
{
System.out.println(s);
}
}
}