elementAt method

  1. @override
N elementAt(
  1. int index
)
override

根据下标寻找目标节点,首尾查找很便宜,寻找中间节点耗时最长,时间复杂度 O(n) / 2

Implementation

@override
N elementAt(int index) {
  assert(
    index >= 0 && index < length,
    'ElLinkedList Error: 链表索引溢出异常 (0 <= $index < $length)',
  );
  late N currentNode;

  if (index > length / 2) {
    currentNode = last;
    for (int i = length - 2; i >= index; i--) {
      currentNode = currentNode.prev!;
    }
  } else {
    currentNode = first;
    for (int i = 1; i <= index; i++) {
      currentNode = currentNode.next!;
    }
  }

  return currentNode;
}