@cosmicmind/algojs
Version:
A TypeScript library featuring algorithms and data structures.
32 lines • 2.42 kB
TypeScript
import { Optional } from '@cosmicmind/foundationjs';
export type Listable = {
next?: Listable;
previous?: Listable;
};
export declare const ListCompareFn: <T extends Listable>(a: T, b: T) => number;
export declare const listNodeCreate: <T extends Listable>(props?: Omit<T, keyof Listable>) => T;
export type List<T extends Listable> = {
first?: T;
last?: T;
count: number;
};
export declare const listCreate: <T extends Listable>() => List<T>;
export declare function listInsert<T extends Listable>(list: List<T>, node: T): void;
export declare function listRemoveFirst<T extends Listable>(list: List<T>): Optional<T>;
export declare function listAppend<T extends Listable>(list: List<T>, node: T): void;
export declare function listRemoveLast<T extends Listable>(list: List<T>): Optional<T>;
export declare function listInsertBefore<T extends Listable>(list: List<T>, insert: T, before: T, compare?: (a: T, b: T) => number): void;
export declare function listRemoveBefore<T extends Listable>(list: List<T>, before: T, compare?: (a: T, b: T) => number): Optional<T>;
export declare function listInsertAfter<T extends Listable>(list: List<T>, insert: T, after: T, compare?: (a: T, b: T) => number): void;
export declare function listRemoveAfter<T extends Listable>(list: List<T>, after: T, compare?: (a: T, b: T) => number): Optional<T>;
export declare function listRemove<T extends Listable>(list: List<T>, node: T, compare?: (a: T, b: T) => number): void;
export declare function listIterateFromFirst<T extends Listable>(list: List<T>): IterableIterator<T>;
export declare function listIterateFromLast<T extends Listable>(list: List<T>): IterableIterator<T>;
export declare function listIterateToNext<T extends Listable>(node: T): IterableIterator<T>;
export declare function listIterateToPrevious<T extends Listable>(node: T): IterableIterator<T>;
export declare function listClear<T extends Listable>(list: List<T>): void;
export declare function listIsFirst<T extends Listable>(list: List<T>, node: T, compare?: (a: T, b: T) => number): boolean;
export declare function listIsLast<T extends Listable>(list: List<T>, node: T, compare?: (a: T, b: T) => number): boolean;
export declare function listHas<T extends Listable>(list: List<T>, node: T): boolean;
export declare function listQuery<T extends Listable>(list: List<T>, ...fn: ((node: T) => boolean)[]): Set<T>;
//# sourceMappingURL=List.d.ts.map