export interface DoublyLinkedListNode { item: T; previous?: DoublyLinkedListNode; next?: DoublyLinkedListNode; } interface DoublyLinkedListOptions { needLength?: boolean; } export declare class DoublyLinkedList { head?: DoublyLinkedListNode; tail?: DoublyLinkedListNode; _length?: number; constructor(options?: DoublyLinkedListOptions); _incrementLength(): void; _decrementLength(): void; _setLength(length: number): void; /** * 链表长度,如果创建链表时,needLength设置为false,这里的length将使用为undefined! */ get length(): number | undefined; /** * 链表是否为空 */ get empty(): boolean; /** * 遍历 */ [Symbol.iterator](): Generator, void, unknown>; /** * 删除某个节点 * @param node 要删除的节点 */ remove(node: DoublyLinkedListNode): void; /** * 根据item搜索node,注意不同的node可能拿着同一个item * @param item 内容 */ getNode(item: T): DoublyLinkedListNode | undefined; /** * Moves nextNode after node * @param node 位置标记 * @param nextNode 要移动的节点 */ moveAfter(node: DoublyLinkedListNode, nextNode: DoublyLinkedListNode): void; /** * Moves nextNode before node * @param node 位置标记 * @param prevNode 要移动的节点 */ moveBefore(node: DoublyLinkedListNode, prevNode: DoublyLinkedListNode): void; /** * 在某个node之前插入数据,未验证 * @param node 位置标记 * @param item 要插入的item */ insertBefore(node: DoublyLinkedListNode, item: T): DoublyLinkedListNode; /** * 在某个node之后插入数据,未验证 * @param node 位置标记 * @param item 要插入的item */ insertAfter(node: DoublyLinkedListNode, item: T): DoublyLinkedListNode; _setFirstNode(item: T): DoublyLinkedListNode; /** * 在链表末端增加一个节点 * @param item 内容 */ push(item: T): DoublyLinkedListNode; /** * 在链表末端删除一个元素,返回删除的元素的内容 */ pop(): T; /** * 在链表首端删除一个元素,返回删除的元素的内容 */ shift(): T; /** * 在链表首端增加一个元素 * @param item 内容 */ unshift(item: T): DoublyLinkedListNode; /** * 删除所有数据 */ removeAll(): void; } export {};