package javacore; /** * @author baoyou E-mail:[email protected] * @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捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!