java数据结构之顺序链表的实现

顺序链表的实现

转载http://www.cnblogs.com/lixiaolun/p/4643664.html

public class SequenceList {

	private int LIST_INIT_SIZE = 5;//链表的原始大小
	private int INCREMENT = 1;//链表的增量
	private Object []SqList = null;//链表
	private int curIndex = 0;//当前位置
	
	//初始化链表
	public void initList(){
		SqList = new Object[LIST_INIT_SIZE];//初始化SqList对象数组
	}
	
	//尾插法  向链表中插入元素
	public void insertList(Object o){
		if ( curIndex > LIST_INIT_SIZE-1 ) {//判断当前链表是否已经满
			//重新为链表分配空间
			System.out.println("重新分配空间");
			LIST_INIT_SIZE += INCREMENT;//链表长度增加
			Object []temp = new Object[LIST_INIT_SIZE];//声明并定义一个临时对象数组
			for(int i = 0 ; i < curIndex ; i++){
				temp[i] = SqList[i];//将SqList对象数组中的每一个对象都赋值给temp临时对象数组
			}
			SqList = null ;//将其置为空
			SqList = temp ;//将temp的地址赋值给SqList
		}
		/*链表中如果不让其包含重复元素,则加入这段代码
		 * if(isContain(o)){
			System.out.println("链表中已经含有"+o);
		}else{
			SqList[curIndex++] = o ;
		}*/
		SqList[curIndex++] = o ;//将对象o存入SqList对象数组中,当前位置curIndex的值加一
	}
	
	//判断是否有重复元素
	Boolean isContain(Object o){
		for(int i=0;icurIndex){
			System.out.println("获取位置不在当前列表的范围:1~"+curIndex);
		}
		return SqList[i-1];
	}
	
	//打印链表
	public void print(){
		for(int i = 0 ; i < curIndex ; i++){
			System.out.print(SqList[i]+"\t");
		}
		
	}
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SequenceList sqList = new SequenceList();
		sqList.initList();
		sqList.insertList(1);
		sqList.insertList(2);
		sqList.insertList(3);
		sqList.insertList(4);
		sqList.insertList(5);
		sqList.insertList(6);
		sqList.insertList(7);
		System.out.println(sqList.curIndex);
		sqList.print();
		System.out.println();
		sqList.delete(8);
		System.out.println("该链表的第3个元素是"+sqList.getElement(3));;
	}

}

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