doubly
Version:
Doubly linked list in TypeScript
39 lines (38 loc) • 1.69 kB
TypeScript
import Node from './Node';
export { default as DoublyNode } from './Node';
export default class Doubly<T> {
head: Node<T> | null;
tail: Node<T> | null;
size: number;
constructor(opts?: {
head?: Node<T>;
});
[Symbol.iterator](): Iterator<T>;
nodes(): IterableIterator<Node<T>>;
at(index: number): T | undefined;
node(index: number): Node<T> | undefined;
concat(list: Iterable<T>): Doubly<T>;
delete(index: number): boolean;
deleteNode(node: Node<T>): void;
every(cb: (value: T, i: number, list: Doubly<T>) => unknown): boolean;
forEach(cb: (value: T, i: number, list: Doubly<T>) => void): void;
forEachRight(cb: (value: T, i: number, list: Doubly<T>) => void): void;
filter(cb: (value: T, i: number, list: Doubly<T>) => unknown): Doubly<T>;
find(cb: (value: T, i: number, list: Doubly<T>) => unknown): T | void;
findIndex(cb: (value: T, i: number, list: Doubly<T>) => unknown): number;
includes(compare: T): boolean;
indexOf(compare: T): number;
map<R>(cb: (value: T, i: number, list: Doubly<T>) => R): Doubly<R>;
pop(): T | undefined;
popNode(): Node<T> | undefined;
push(val: T): void;
pushNode(node: Node<T>): void;
reduce<M>(cb: (memo: M | T, value: T, i: number, list: Doubly<T>) => M): M;
reduce<M>(cb: (memo: M, value: T, i: number, list: Doubly<T>) => M, initialValue: M): M;
shift(): T | undefined;
shiftNode(): Node<T> | undefined;
unshift(val: T): void;
unshiftNode(node: Node<T>): void;
some(cb: (value: T, i: number, list: Doubly<T>) => unknown): boolean;
splice(index: number, removeCount: number, ...items: Array<T>): Doubly<T>;
}