UNPKG

stl-kit

Version:

A modern JavaScript & TypeScript standard template library (STL) for data structures and algorithms. Includes high-performance implementations of Stack, Queue, Deque, Linked List, Vector, Set, Map, Tree, Heap, and Graph — inspired by C++ STL. Designed for

45 lines (42 loc) 1.71 kB
import { ListNode } from '../core/list-node.cjs'; type Factory<T, A extends unknown[]> = (...args: A) => T; interface ListOptions<T, A extends unknown[]> { initValues?: T[]; factory?: Factory<T, A>; } declare class LinkedList<T, A extends unknown[] = [T]> { #private; constructor({ initValues, factory }?: ListOptions<T, A>); [Symbol.iterator](): IterableIterator<T>; rbegin(): IterableIterator<T>; begin(): IterableIterator<T>; pushFront(value: T): void; pushBack(value: T): void; popFront(): T | undefined; popBack(): T | undefined; insertAt(val: T, index: number): void; eraseAt(index: number): T | undefined; emplaceFront(...args: A): void; emplaceBack(...args: A): void; emplaceAt(index: number, ...args: A): void; isEmpty(): boolean; clear(): void; toArray(): T[]; assign(count: number, value: T): void; assign(values: T[], start?: number, end?: number): void; forEach(callback: (value: T, index: number, list: LinkedList<T, A>) => void | false, thisArg?: unknown): void; reverse(): void; remove(val: T, compareFn?: (currValue: T, constValue: T) => boolean): number; get length(): number; get front(): T | undefined; set front(val: T); get back(): T | void; set back(val: T); static swap<U, V extends unknown[] = [U]>(list1: LinkedList<U, V> | null, list2: LinkedList<U, V> | null): void; static merge<U, V extends unknown[] = [U]>(target: LinkedList<U, V> | null, source: LinkedList<U, V> | null, compareFn?: (a: U, b: U) => number): void; static buildNodes<T>(values: T[]): { head: ListNode<T> | null; tail: ListNode<T> | null; }; } export { LinkedList };