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;i<curIndex;i++){
			if(SqList[i].equals(o)){
				return true;
			}
		}
		return false;
	}
	
	//删除链表中的元素
	public void delete(Object o){
		for(int i=0;i<curIndex;i++){
			if(SqList[i].equals(o)){
				for(int j=i;j<curIndex-1;j++){
					SqList[j]=SqList[j+1];
				}
				curIndex--;
				continue;
			}
			if(i==curIndex-1){
				System.out.println("不存在此元素");
			}
		}
	}
	
	//获取链表中的某个元素
	public Object getElement(int i){
		if(i<=0 || i>curIndex){
			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));;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值