public boolean offer(E e) {
return add(e);
}
public boolean offerFirst(E e) {
addFirst(e);
return true;
}
public boolean offerLast(E e) {
addLast(e);
return true;
}
public boolean add(E e) {
linkLast(e);
return true;
}
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++;
modCount++;
}
private void linkFirst(E e) {
final Node<E> f = first;
final Node<E> newNode = new Node<>(null?? e?? f);
first = newNode;
if (f == null)
last = newNode;
else
f.prev = newNode;
size++;
modCount++;
}

????offer(E)???????????????β??offerFirst??E???????????????????offerLast??E?????????ú?offer(E)????????
????K??push(E)
????public void push(E e) {
????addFirst(e);
????}
????public void addFirst(E e) {
????linkFirst(e);
????}
????private void linkFirst(E e) {
????final Node<E> f = first;
????final Node<E> newNode = new Node<>(null?? e?? f);
????first = newNode;
????if (f == null)
????last = newNode;
????else
????f.prev = newNode;
????size++;
????modCount++;
????}
??????????????????????????
????l:pop()