??????Щ?????????????????????????? add(int index?? E element) ??????????????????λ?ò????????????ж?λ???????磬????ж??????????λ?á?????????????????β????????? linkBefore(element?? node(index) ????????????????????????????? node(index) ??????????????????????λ???????????????£?
????Node<E> node(int index) {
????// assert isElementIndex(index);
????if (index < (size >> 1)) {
????Node<E> x = first;
????for (int i = 0; i < index; i++)
????x = x.next;
????return x;
????} else {
????Node<E> x = last;
????for (int i = size - 1; i > index; i--)
????x = x.prev;
????return x;
????}
????}
?????????и?С?????????ж?λ??????????????λ?????Σ???????????????????β????????????? ????????????????臨????? O(n) ?????????λ????ж??????????????????????????????????????????????臨?????? O(1) ?????? O(n/2)+O(1) ????????????λ?????? get(int index) ??????????? node ?????
????public E get(int index) {
????checkElementIndex(index);
????return node(index).item;
????}
?????????? remove ??????
????public E remove(int index) {
????checkElementIndex(index);
????return unlink(node(index));
????}
????public boolean remove(Object o) {
????if (o == null) {
????for (Node<E> x = first; x != null; x = x.next) {
????if (x.item == null) {
????unlink(x);
????return true;
????}
????}
????} else {
????for (Node<E> x = first; x != null; x = x.next) {
????if (o.equals(x.item)) {
????unlink(x);
????return true;
????}
????}
????}
????return false;
????}
????????? remove(int index) ???????????? node(index) ???????????????? remove(Object o) ???????????????????????α?????????????????????????????????????????? node ????????????臨???? O(n) ????????????????????? LinkedList ?????????? null ??
???????
????LinkedList ?????????????????????? null ??
????LinkedList ??????????????????????????????????臨????? O(1) ???????????????λ??????????????臨????? O(n) ??