chenyc
2025-12-09 65e034683b28d799e73c7d7e5e4769fab5b9bc9c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import SequentialContainer from './Base';
import { ContainerIterator, initContainer } from "../ContainerBase";
declare class LinkListIterator<T> extends ContainerIterator<T> {
    readonly container: LinkList<T>;
    get pointer(): T;
    set pointer(newValue: T);
    copy(): LinkListIterator<T>;
    equals(iter: LinkListIterator<T>): boolean;
    pre(): this;
    next(): this;
}
export type { LinkListIterator };
declare class LinkList<T> extends SequentialContainer<T> {
    constructor(container?: initContainer<T>);
    clear(): void;
    begin(): LinkListIterator<T>;
    end(): LinkListIterator<T>;
    rBegin(): LinkListIterator<T>;
    rEnd(): LinkListIterator<T>;
    front(): T | undefined;
    back(): T | undefined;
    getElementByPos(pos: number): T;
    eraseElementByPos(pos: number): number;
    eraseElementByValue(_value: T): number;
    eraseElementByIterator(iter: LinkListIterator<T>): LinkListIterator<T>;
    pushBack(element: T): number;
    popBack(): T | undefined;
    /**
     * @description Push an element to the front.
     * @param element - The element you want to push.
     * @returns The size of queue after pushing.
     */
    pushFront(element: T): number;
    /**
     * @description Removes the first element.
     * @returns The element you popped.
     */
    popFront(): T | undefined;
    setElementByPos(pos: number, element: T): void;
    insert(pos: number, element: T, num?: number): number;
    find(element: T): LinkListIterator<T>;
    reverse(): void;
    unique(): number;
    sort(cmp?: (x: T, y: T) => number): void;
    /**
     * @description Merges two sorted lists.
     * @param list - The other list you want to merge (must be sorted).
     * @returns The size of list after merging.
     * @example
     * const linkA = new LinkList([1, 3, 5]);
     * const linkB = new LinkList([2, 4, 6]);
     * linkA.merge(linkB);  // [1, 2, 3, 4, 5];
     */
    merge(list: LinkList<T>): number;
    forEach(callback: (element: T, index: number, list: LinkList<T>) => void): void;
    [Symbol.iterator](): Generator<T, void, unknown>;
}
export default LinkList;