@panyam/priorityq
Version:
A Priority Queue implementation with O(1) lookups for lookup by value.
22 lines (21 loc) • 758 B
TypeScript
export declare type Comparator<T> = (value1: T, value2: T) => number;
export declare type Nullable<T> = T | null;
export interface Handle<T = any> {
value: T;
}
export declare abstract class Storage<T> {
private _cmpFunc;
constructor(cmpFunc: Comparator<T>);
heapify(values: IterableIterator<T>): void;
get comparator(): Comparator<T>;
set comparator(cmpFunc: Comparator<T>);
abstract get size(): number;
abstract clear(): void;
adjust(_handle: Handle<T>): void;
abstract get sortedHandles(): IterableIterator<Handle<T>>;
abstract get isEmpty(): boolean;
abstract get top(): Handle<T>;
abstract pop(): Handle<T>;
abstract push(value: T): Handle<T>;
abstract remove(handle: Handle<T>): Handle<T>;
}