首页 > 其他 > 详细

实现LindedList

时间:2016-01-04 02:06:44      阅读:310      评论:0      收藏:0      [点我收藏+]
public class MyLinkedList {
	public LinkedNode first;
	public LinkedNode last;
	public int size;

	public void add(Object obj) {
		LinkedNode n = new LinkedNode();
		if (first == null) {
			n.setPrevious(null);
			n.setObj(obj);
			n.setNext(null);

			first = n;
			last = n;
		} else {
			n.setPrevious(last);
			n.setObj(obj);
			n.setNext(null);
			last.setNext(n);
			last = n;
		}
		size++;
	}
	public int size() {
		return size;
	}
	private void rangeCheck(int index) {
		if (index >= size)
			throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
	}
	private String outOfBoundsMsg(int index) {
		return "Index: " + index + ", Size: " + size;
	}
	public Object get(int i) {
		// 考虑越界
		LinkedNode node = getNode(i);
		if(node!=null){
			return node.getObj();
		}
		return null;
	}
	public LinkedNode getNode(int i){
		rangeCheck(i);
		LinkedNode temp = null;
		if (first != null) {
			temp = first;
			for (int j = 0; j < i; j++) {
				temp = temp.getNext();
			}
		}
		return temp;
	}
	
	public void delete(int i) {
		if(null!=getNode(i)){
			LinkedNode temp = getNode(i);
			LinkedNode pre = temp.getPrevious();
			LinkedNode next = temp.getNext();
			pre.setNext(next);
			next.setPrevious(pre);
			size--;
		}
	}
	public void add(int i,Object obj) {
		LinkedNode n = new LinkedNode();
		if(first==null && i==0 && size==0){
			n.setPrevious(null);
			n.setObj(obj);
			n.setNext(null);
			first = n;
			last = n;
		} else{
			if(null!=getNode(i)){
				LinkedNode temp = getNode(i);
				LinkedNode pre = temp.getPrevious();
				LinkedNode next = temp.getNext();
				n.setObj(obj);
				if(pre==null){
					first = temp;
					n.setPrevious(first);
					first.setNext(n);
				}
				n.setPrevious(pre);
				pre.setNext(n);
				if(next==null){//如果找不到最后一个就是最后一个
					last = temp;
					n.setNext(last);
					last.setPrevious(n);
				}else{
					n.setNext(next);
					next.setPrevious(n);
				}
				
			}
		}
		size++;
	}
	public static void main(String[] args) {

		MyLinkedList list = new MyLinkedList();
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.delete(1);
		
		list.add(1, "ddd");
		System.out.println(list.get(1));
	}
}

?

public class LinkedNode {
	private LinkedNode previous;
	private Object obj;
	private LinkedNode next;
	public LinkedNode getPrevious() {
		return previous;
	}
	public void setPrevious(LinkedNode previous) {
		this.previous = previous;
	}
	public Object getObj() {
		return obj;
	}
	public void setObj(Object obj) {
		this.obj = obj;
	}
	public LinkedNode getNext() {
		return next;
	}
	public void setNext(LinkedNode next) {
		this.next = next;
	}
	 
}

?

实现LindedList

原文:http://hangzhoujava.iteye.com/blog/2268285

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!