`
knight_black_bob
  • 浏览: 823716 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LinkedList 仿源码

阅读更多

 

 

 

 

 

package javacore;

/**
 * @author baoyou E-mail:curiousby@163.com
 * @version 创建时间:2015年9月7日 下午12:31:13 des:
 */
public class LinkedList<E> {

	public static class Node<E> {
		public E obj;
		public Node<E> prev = null;
		public Node<E> next = null;

		Node(Node<E> prev, E element, Node<E> next) {
			this.obj = element;
			this.next = next;
			this.prev = prev;
		}
	}

	transient int size = 0;
	transient Node<E> first;
	transient Node<E> last;

	public void linkLast(E e) {
		final Node<E> l = last;
		final Node<E> newNode = new Node<>(l, e, null);
		last = newNode;
		if (l == null)
			first = newNode;
		else
			l.next = newNode;
		size++;
	}

	E unlink(Node<E> x) {
		final E element = x.obj;
		final Node<E> next = x.next;
		final Node<E> prev = x.prev;

		if (prev == null) {
			first = next;
		} else {
			prev.next = next;
			x.prev = null;
		}

		if (next == null) {
			last = prev;
		} else {
			next.prev = prev;
			x.next = null;
		}

		x.obj = null;
		size--;
		return element;
	}

	public boolean add(E e) {
		linkLast(e);
		return true;
	}

	public boolean remove(E e) {
		if (e == null) {
			for (Node<E> x = first; x != null; x = x.next) {
				if (x.obj == null) {
					unlink(x);
					return true;
				}
			}
		} else {
			for (Node<E> x = first; x != null; x = x.next) {
				if (e.equals(x.obj)) {
					unlink(x);
					return true;
				}
			}
		}
		return false;
	}

	public E getFirst() {
		return first.obj;
	}

	public E getLast() {
		return last.obj;
	}

	public static void main(String[] args) {
		LinkedList ll = new LinkedList<>();
		ll.add(1);
		ll.add(2);
		System.out.println(ll.getFirst() + " --- " + ll.getLast());
		ll.remove(2);
		System.out.println(ll.getFirst() + " --- " + ll.getLast()); 
	}

}

 

 

 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

  • 大小: 1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics