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;
|