LinkList.d.ts 1.7 KB

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