链表小结

1、链表的构成:包括节点类(Node)、根节点(root)、末节点(tail)、其中节点类包括datanext两个属性。

2、链表内部的一些构造方法和方法:添加(add)、得到长度(size)、得到指定位置的储存内容(get)、移除(remove)和插入(insert)

3、链表的作用:个人对链表还不是很熟悉,但是感觉它有一个突破点——那就是它把原来动态分配的空间连接在了一起,方便了管理。而且他的大小是随意改变的,不像数组之类的在初始化时就已经确定了大小。

4、图示解说:



 

public class LHWLink {
	//定义一个根节点
	private Node root;
	//定义一个末尾的节点
	private Node last;
	//定义一个长度
	private int size;
	
	//定义一个添加的方法
	public void add(Object ob){
		//定义一个新节点
		Node node = new Node();
		node.data = ob;
		if(root == null){
			root = node;
			last = node;
		}else{
			last.next = node;
			last = node;
		}
		size++;
	}
	//定义一个的得到长度的方法
	public int size(){
		return size;
	}
	//定义一个得到的方法
	public Object get(int index){
		if(index<0 || index>size-1){
			//抛出一个异常
			throw new java.lang.ArrayIndexOutOfBoundsException("超出范围");
		}else{
			Node temp = root;
			if(index == 0){
				return root.data;
			}
			for(int i=0;i<index;i++){
				temp = temp.next;
			}
			return temp.data; 
			
		}
	}
	//定义一个删除的方法
	public Object remove(int index){
		if(index<0 || index>size-1){
			//抛出一个异常
			throw new java.lang.ArrayIndexOutOfBoundsException("超出范围");
		}else{
			if(size == 1){
				size--;
				Object obj = root.data;
				root = null;
				return obj;
			}
			size--;
			if(index == 0){
				Object obj = root.data;
				root = root.next;
				return obj;
			}
			Node temp = root;
			for(int i=0;i<index-1;i++){
				temp = temp.next;
			}
			Object dele_data = temp.next.data;
			temp.next = temp.next.next;
			if(index == size){
				last = temp;
			}
			return dele_data;
		}
		
	}
	//定义一个插入的方法
	public void insert(Object obj, int index){
		if(index<0 || index>size-1){
			//抛出一个异常
			throw new java.lang.ArrayIndexOutOfBoundsException("超出范围!");
		}else{
			Node temp = root;
			Node node = new Node();
			node.data = obj;
			if(index == 0){
				node.next = root;
				root = node;
				size++;
				return;
			}
			for(int i=0;i<index-1;i++){
				temp = temp.next;
			}
			node.next = temp.next;
			temp.next = node;
			size++;
		}
		
	}

}
 节点类

 

 

public class Node {
	public Node next;
	public Object data;
//	public Node front;(如果要建立双向链表)
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值