///
/**
* 下标错误
*/
declare class InvalidIndexError extends Error {
constructor(message?: string);
}
/**
* @public
*/
declare class DoublyLinkedList {
/**
* 下标异常
*/
static readonly InvalidIndexError: typeof InvalidIndexError;
/**
* 双向链表为空
*/
static readonly EmptyError: {
new (message?: string): {
name: string;
message: string;
stack?: string | undefined;
};
captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
stackTraceLimit: number;
};
/**
* 头结点
*/
private head;
/**
* 尾节点
*/
private tail;
/**
* 节点数
*/
private length;
constructor();
/**
* 检查下标,如果不对就报个错
*
* @param index - 下标
*/
private checkIndex;
/**
* 检查链表是否为空
*/
private sizeCheck;
/**
* 清空
*/
clear(): void;
/**
* 连接两个链表,不是纯函数
*/
concat(linkList: DoublyLinkedList): DoublyLinkedList;
/**
* 是否包含某个值
*/
contains(value: T): boolean;
/**
* 过滤出所有的值
*/
filter(fn: (value: T, index: number, linkList: DoublyLinkedList) => boolean): DoublyLinkedList;
/**
* 查找第一个满足要求的元素, 找不到就是undefined
*/
find(fn: (value: T, index: number, linkList: DoublyLinkedList) => boolean): T | undefined;
/**
* 查找第一个满足要求的元素下标
*/
findIndex(fn: (value: T, index: number, linkList: DoublyLinkedList) => boolean): number;
/**
* 简单循环
*/
forEach(fn: (value: T, index: number, linkList: DoublyLinkedList) => void): void;
/**
* 获取指定下标的值
*/
get(index: number): T;
/**
* 获取链表中的第一个值
*/
getFirst(): T;
/**
* 获取链表中的最后一个值
*/
getLast(): T;
/**
* 判断是否包含某一个值
*/
includes(value: T): boolean;
/**
* 查找指定值的下标
*/
indexOf(value: T): number;
/**
* 判断是否为空
*/
isEmpty(): boolean;
/**
* 根据指定分隔符连接字符串
*/
join(delimiter?: string, transfer?: (value: T, index: number, linkList: DoublyLinkedList) => T): string;
/**
* 指定值的最大下标
*/
lastIndexOf(value: T): number;
/**
* 指定条件的映射
* 返回一个新
*/
map(fn: (value: T, index: number, linkList: DoublyLinkedList) => T): DoublyLinkedList;
/**
* 去掉最后一个
*/
pop(): T;
/**
* 向尾部添加
*/
push(value: T): number;
/**
* 缩减
*/
reduce(fn: (prev: any, currentValue: T, index: number, context: DoublyLinkedList) => any, initialValue?: any): any;
/**
* 反向缩减
*/
reduceRight(fn: (prev: any, currentValue: T, index: number) => any, initialValue?: any): any;
/**
* 移除指定下标的值
*/
remove(index: number): T | undefined;
/**
* 反转, 应该要改变原来的
* 这里不是简单改个头指针就行了
* 需要交换每个节点的前后指针
*/
reverse(): DoublyLinkedList;
/**
* 设置指定位置的值
*/
set(index: number, value: T): void;
/**
* 移除第一个
*/
shift(): T | undefined;
/**
* 获取的长度
*/
size(): number;
/**
* 获取其中的一段
*/
slice(start?: number, end?: number): DoublyLinkedList;
/**
* 遍历其中的一部分, 和findIndex逻辑几乎一样
*/
some(fn: (value: T, index: number, context: DoublyLinkedList) => boolean): boolean;
/**
* 排序,选择排序,毕竟是自己写的工具,要求不能太高
*/
sort(fn: (item1: T, item2: T) => number): this;
toString(): string;
toArray(): T[];
/**
* 向头部添加
*/
unshift(value: T): void;
/**
* 根据条件移除
*/
removeEach(callback: (value: T, index: number, context: DoublyLinkedList) => boolean): number;
/**
* 反向遍历
*/
forEachReverse(callback: (value: T, index: number, context: DoublyLinkedList) => boolean): void;
/**
* 反向查找
*/
findReverse(fn: (value: T, index: number, linkList: DoublyLinkedList) => boolean): T | undefined;
/**
* 返回一个迭代器
* 为了能够for..of循环
*/
[Symbol.iterator](): {
next: () => {
value: T;
done: boolean;
};
};
}
export default DoublyLinkedList;