重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

LinkedList源码分析

//双端队列
//大小
transient int size = 0;
//第一个节点元素
transient Node first;
//最后一个节点元素
transient Node last;

创新互联主要从事成都网站制作、做网站、外贸营销网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务驻马店,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

public LinkedList() {
}

private static class Node {
E item;
Node next;
Node prev;

    Node(Node prev, E element, Node next) {
        this.item = element;
        this.next = next;
        this.prev = prev;
    }
}

//在首位追加
private void linkFirst(E e) {
final Node f = first;
final Node newNode = new Node<>(null, e, f);
first = newNode;
if (f == null)
last = newNode;
else
f.prev = newNode;
size++;
modCount++;
}

/**
 * Links e as last element.
 */
 //在末位追加
void linkLast(E e) {
    final Node l = last;
    final Node newNode = new Node<>(l, e, null);
    last = newNode;
    if (l == null)
        first = newNode;
    else
        l.next = newNode;
    size++;
    modCount++;
}

/**
 * Inserts element e before non-null Node succ.
 */
 //在指定节点前添加元素
void linkBefore(E e, Node succ) {
    // assert succ != null;
    final Node pred = succ.prev;
    final Node newNode = new Node<>(pred, e, succ);
    succ.prev = newNode;
    if (pred == null)
        first = newNode;
    else
        pred.next = newNode;
    size++;
    modCount++;
}

/**
 * Unlinks non-null first node f.
 */
private E unlinkFirst(Node f) {
    // assert f == first && f != null;
    final E element = f.item;
    final Node next = f.next;
    f.item = null;
    f.next = null; // help GC
    first = next;
    if (next == null)
        last = null;
    else
        next.prev = null;
    size--;
    modCount++;
    return element;
}

/**
 * Unlinks non-null last node l.
 */
private E unlinkLast(Node l) {
    // assert l == last && l != null;
    final E element = l.item;
    final Node prev = l.prev;
    l.item = null;
    l.prev = null; // help GC
    last = prev;
    if (prev == null)
        first = null;
    else
        prev.next = null;
    size--;
    modCount++;
    return element;
}

//添加元素
public boolean add(E e) {
//在链表最后一个节点追加一个节点
linkLast(e);
return true;
}


当前题目:LinkedList源码分析
转载注明:http://cqcxhl.com/article/jeoihh.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP