java数据结构之顺序表手工实现

以下声明SeqList类表示顺序表,element是一个存放线性表的一位数组,元素类型为T;
len表示顺序表的长度;

public class SeqList<T> {
	
	private Object[] element;				//对象数组,设置成私有成员
	private int len;						//顺序表的长度,元素的个数
	
	public SeqList(int size){				//构造方法,创建容量为size的空表
		this.element = new Object[size];
		this.len = 0;
	}
	public SeqList(){this(64);}				//seqList构造方法,创建默认的空表
	
	public boolean isEmpty(){return this.len == 0;}			//判断顺序表是否为空
	
	public int length(){					//返回顺序表的长度
		return this.len;
	}
	
	public T get(int i){					//返回顺序表第i个位置的值
		if(i>=0&&i<this.len){
			return (T)this.element[i];
		}
		return null;
	}
	
	public void set(int i,T x){				//设置顺序表第i个位置的值
		if(x == null)
			return;
		if(i>=0&&i<this.len)
			this.element[i] = x;
		else 
			throw new IndexOutOfBoundsException(i+"");			//抛出序号越界异常
	}
	
	public String toString(){				
		String str = "";
		for(int i=0;i<this.len;i++){
			str += this.element[i].toString()+" ";
		}
		return str;
	}
	
	public void insert(int i,T x){				//插入x作为第i个元素
		if(x == null)
			return;
		if(this.len == element.length){			//若数组满,则扩充顺序表容量
			Object[] temp = this.element;
			this.element = new Object[temp.length*2];
			for(int j=0;j<temp.length;j++){
				this.element[j] = temp[j];
			}
		}
		if(i<0)
			i=0;
		if(i>0)
			i=this.len;
		for(int j=this.len-1;j>=i;j--){
			this.element[j+1] = this.element[j];
		}
		this.element[i] = x;
		this.len++;
	}
	
	public T remove(int i){					//删除第i个元素,返回删除的值
		if(this.len==0||i<0||i>=this.len)
			return null;
		T old = (T)this.element[i];
		for(int j=i;j<this.len-1;j++){
			this.element[j] = this.element[j+1];
		}
		this.len--;
		return old;
	}
	
	public static void main(String[] args){
		SeqList<String> seq = new SeqList();
		seq.insert(0, "1");
		seq.insert(1, "2");
		seq.insert(2, "3");
		System.out.print(seq.toString());
	}
}


本小龙初学java,若有什么不对的地方,请给位大神指教;

1 2 3 

你可能感兴趣的:(java,数据结构)