链表小结_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 链表小结

链表小结

 2014/3/23 22:48:47  GeassG  程序员俱乐部  我要评论(0)
  • 摘要:1、链表的构成:包括节点类(Node)、根节点(root)、末节点(tail)、其中节点类包括data和next两个属性。2、链表内部的一些构造方法和方法:添加(add)、得到长度(size)、得到指定位置的储存内容(get)、移除(remove)和插入(insert)。3、链表的作用:个人对链表还不是很熟悉,但是感觉它有一个突破点——那就是它把原来动态分配的空间连接在了一起,方便了管理。而且他的大小是随意改变的,不像数组之类的在初始化时就已经确定了大小。4、图示解说
  • 标签:

class="p0">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;(如果要建立双向链表)
}
?

?

  • 大小: 9.7 KB
  • 查看图片附件
  • 相关文章
发表评论
用户名: 匿名