elementAt method
根据下标寻找目标节点,首尾查找很便宜,寻找中间节点耗时最长,时间复杂度 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;
}