dd5b414224015c2b48f9425823b70876ac301a5bee1c1269ada35917bbc4f037a1a931dc7388b5f0dc7b9dac00ddfae25f9c3a895f4d1951928c9859da6532 2.1 KB

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