data-structure-typed 1.54.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/LICENSE +2 -2
  3. package/README.md +14 -1
  4. package/README_zh-CN.md +1 -1
  5. package/benchmark/report.html +28 -1
  6. package/benchmark/report.json +327 -18
  7. package/dist/cjs/data-structures/base/iterable-element-base.d.ts +14 -40
  8. package/dist/cjs/data-structures/base/iterable-element-base.js +14 -11
  9. package/dist/cjs/data-structures/base/iterable-element-base.js.map +1 -1
  10. package/dist/cjs/data-structures/base/linear-base.d.ts +277 -0
  11. package/dist/cjs/data-structures/base/linear-base.js +553 -0
  12. package/dist/cjs/data-structures/base/linear-base.js.map +1 -0
  13. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.d.ts +21 -20
  14. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js +8 -7
  15. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
  16. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +23 -19
  17. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +51 -38
  18. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  19. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +89 -21
  20. package/dist/cjs/data-structures/binary-tree/avl-tree.js +76 -8
  21. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  22. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +173 -225
  23. package/dist/cjs/data-structures/binary-tree/binary-tree.js +244 -149
  24. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  25. package/dist/cjs/data-structures/binary-tree/bst.d.ts +62 -56
  26. package/dist/cjs/data-structures/binary-tree/bst.js +89 -133
  27. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  28. package/dist/cjs/data-structures/binary-tree/red-black-tree.d.ts +19 -25
  29. package/dist/cjs/data-structures/binary-tree/red-black-tree.js +7 -13
  30. package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -1
  31. package/dist/cjs/data-structures/binary-tree/tree-counter.d.ts +19 -19
  32. package/dist/cjs/data-structures/binary-tree/tree-counter.js +12 -12
  33. package/dist/cjs/data-structures/binary-tree/tree-counter.js.map +1 -1
  34. package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +186 -25
  35. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +211 -41
  36. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  37. package/dist/cjs/data-structures/graph/abstract-graph.js +2 -2
  38. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  39. package/dist/cjs/data-structures/heap/heap.d.ts +3 -11
  40. package/dist/cjs/data-structures/heap/heap.js +0 -10
  41. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  42. package/dist/cjs/data-structures/heap/max-heap.d.ts +2 -2
  43. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
  44. package/dist/cjs/data-structures/heap/min-heap.d.ts +2 -2
  45. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
  46. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +65 -94
  47. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +131 -146
  48. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  49. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +79 -75
  50. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +217 -169
  51. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  52. package/dist/cjs/data-structures/priority-queue/max-priority-queue.d.ts +2 -2
  53. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  54. package/dist/cjs/data-structures/priority-queue/min-priority-queue.d.ts +2 -2
  55. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  56. package/dist/cjs/data-structures/priority-queue/priority-queue.d.ts +2 -2
  57. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
  58. package/dist/cjs/data-structures/queue/deque.d.ts +130 -91
  59. package/dist/cjs/data-structures/queue/deque.js +269 -169
  60. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  61. package/dist/cjs/data-structures/queue/queue.d.ts +84 -40
  62. package/dist/cjs/data-structures/queue/queue.js +134 -50
  63. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  64. package/dist/cjs/data-structures/stack/stack.d.ts +3 -11
  65. package/dist/cjs/data-structures/stack/stack.js +0 -10
  66. package/dist/cjs/data-structures/stack/stack.js.map +1 -1
  67. package/dist/cjs/data-structures/trie/trie.d.ts +4 -3
  68. package/dist/cjs/data-structures/trie/trie.js +3 -0
  69. package/dist/cjs/data-structures/trie/trie.js.map +1 -1
  70. package/dist/cjs/types/data-structures/base/base.d.ts +9 -4
  71. package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -1
  72. package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +1 -0
  73. package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +1 -1
  74. package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.d.ts +1 -1
  75. package/dist/cjs/types/data-structures/linked-list/doubly-linked-list.d.ts +2 -2
  76. package/dist/cjs/types/data-structures/linked-list/singly-linked-list.d.ts +2 -2
  77. package/dist/cjs/types/data-structures/queue/deque.d.ts +2 -3
  78. package/dist/cjs/types/data-structures/queue/queue.d.ts +2 -2
  79. package/dist/cjs/utils/utils.d.ts +2 -2
  80. package/dist/esm/data-structures/base/iterable-element-base.d.ts +14 -40
  81. package/dist/esm/data-structures/base/iterable-element-base.js +14 -11
  82. package/dist/esm/data-structures/base/iterable-element-base.js.map +1 -1
  83. package/dist/esm/data-structures/base/linear-base.d.ts +277 -0
  84. package/dist/esm/data-structures/base/linear-base.js +549 -0
  85. package/dist/esm/data-structures/base/linear-base.js.map +1 -0
  86. package/dist/esm/data-structures/binary-tree/avl-tree-counter.d.ts +21 -20
  87. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js +9 -8
  88. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
  89. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.d.ts +23 -19
  90. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js +52 -38
  91. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  92. package/dist/esm/data-structures/binary-tree/avl-tree.d.ts +89 -21
  93. package/dist/esm/data-structures/binary-tree/avl-tree.js +77 -9
  94. package/dist/esm/data-structures/binary-tree/avl-tree.js.map +1 -1
  95. package/dist/esm/data-structures/binary-tree/binary-tree.d.ts +173 -225
  96. package/dist/esm/data-structures/binary-tree/binary-tree.js +248 -153
  97. package/dist/esm/data-structures/binary-tree/binary-tree.js.map +1 -1
  98. package/dist/esm/data-structures/binary-tree/bst.d.ts +62 -56
  99. package/dist/esm/data-structures/binary-tree/bst.js +90 -132
  100. package/dist/esm/data-structures/binary-tree/bst.js.map +1 -1
  101. package/dist/esm/data-structures/binary-tree/red-black-tree.d.ts +19 -25
  102. package/dist/esm/data-structures/binary-tree/red-black-tree.js +8 -14
  103. package/dist/esm/data-structures/binary-tree/red-black-tree.js.map +1 -1
  104. package/dist/esm/data-structures/binary-tree/tree-counter.d.ts +19 -19
  105. package/dist/esm/data-structures/binary-tree/tree-counter.js +13 -13
  106. package/dist/esm/data-structures/binary-tree/tree-counter.js.map +1 -1
  107. package/dist/esm/data-structures/binary-tree/tree-multi-map.d.ts +186 -25
  108. package/dist/esm/data-structures/binary-tree/tree-multi-map.js +212 -41
  109. package/dist/esm/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  110. package/dist/esm/data-structures/graph/abstract-graph.js +2 -2
  111. package/dist/esm/data-structures/graph/abstract-graph.js.map +1 -1
  112. package/dist/esm/data-structures/heap/heap.d.ts +3 -11
  113. package/dist/esm/data-structures/heap/heap.js +0 -10
  114. package/dist/esm/data-structures/heap/heap.js.map +1 -1
  115. package/dist/esm/data-structures/heap/max-heap.d.ts +2 -2
  116. package/dist/esm/data-structures/heap/max-heap.js.map +1 -1
  117. package/dist/esm/data-structures/heap/min-heap.d.ts +2 -2
  118. package/dist/esm/data-structures/heap/min-heap.js.map +1 -1
  119. package/dist/esm/data-structures/linked-list/doubly-linked-list.d.ts +65 -94
  120. package/dist/esm/data-structures/linked-list/doubly-linked-list.js +132 -148
  121. package/dist/esm/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  122. package/dist/esm/data-structures/linked-list/singly-linked-list.d.ts +79 -75
  123. package/dist/esm/data-structures/linked-list/singly-linked-list.js +217 -170
  124. package/dist/esm/data-structures/linked-list/singly-linked-list.js.map +1 -1
  125. package/dist/esm/data-structures/priority-queue/max-priority-queue.d.ts +2 -2
  126. package/dist/esm/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  127. package/dist/esm/data-structures/priority-queue/min-priority-queue.d.ts +2 -2
  128. package/dist/esm/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  129. package/dist/esm/data-structures/priority-queue/priority-queue.d.ts +2 -2
  130. package/dist/esm/data-structures/priority-queue/priority-queue.js.map +1 -1
  131. package/dist/esm/data-structures/queue/deque.d.ts +130 -91
  132. package/dist/esm/data-structures/queue/deque.js +269 -169
  133. package/dist/esm/data-structures/queue/deque.js.map +1 -1
  134. package/dist/esm/data-structures/queue/queue.d.ts +84 -40
  135. package/dist/esm/data-structures/queue/queue.js +135 -51
  136. package/dist/esm/data-structures/queue/queue.js.map +1 -1
  137. package/dist/esm/data-structures/stack/stack.d.ts +3 -11
  138. package/dist/esm/data-structures/stack/stack.js +0 -10
  139. package/dist/esm/data-structures/stack/stack.js.map +1 -1
  140. package/dist/esm/data-structures/trie/trie.d.ts +4 -3
  141. package/dist/esm/data-structures/trie/trie.js +3 -0
  142. package/dist/esm/data-structures/trie/trie.js.map +1 -1
  143. package/dist/esm/types/data-structures/base/base.d.ts +9 -4
  144. package/dist/esm/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -1
  145. package/dist/esm/types/data-structures/binary-tree/binary-tree.d.ts +1 -0
  146. package/dist/esm/types/data-structures/binary-tree/bst.d.ts +1 -1
  147. package/dist/esm/types/data-structures/binary-tree/tree-multi-map.d.ts +1 -1
  148. package/dist/esm/types/data-structures/linked-list/doubly-linked-list.d.ts +2 -2
  149. package/dist/esm/types/data-structures/linked-list/singly-linked-list.d.ts +2 -2
  150. package/dist/esm/types/data-structures/queue/deque.d.ts +2 -3
  151. package/dist/esm/types/data-structures/queue/queue.d.ts +2 -2
  152. package/dist/esm/utils/utils.d.ts +2 -2
  153. package/dist/umd/data-structure-typed.js +1548 -920
  154. package/dist/umd/data-structure-typed.min.js +5 -12
  155. package/dist/umd/data-structure-typed.min.js.map +1 -1
  156. package/package.json +7 -7
  157. package/src/data-structures/base/iterable-element-base.ts +29 -20
  158. package/src/data-structures/base/linear-base.ts +649 -0
  159. package/src/data-structures/binary-tree/avl-tree-counter.ts +30 -23
  160. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +74 -49
  161. package/src/data-structures/binary-tree/avl-tree.ts +99 -29
  162. package/src/data-structures/binary-tree/binary-tree.ts +474 -257
  163. package/src/data-structures/binary-tree/bst.ts +150 -152
  164. package/src/data-structures/binary-tree/red-black-tree.ts +27 -35
  165. package/src/data-structures/binary-tree/tree-counter.ts +33 -27
  166. package/src/data-structures/binary-tree/tree-multi-map.ts +235 -53
  167. package/src/data-structures/graph/abstract-graph.ts +2 -2
  168. package/src/data-structures/heap/heap.ts +3 -14
  169. package/src/data-structures/heap/max-heap.ts +2 -2
  170. package/src/data-structures/heap/min-heap.ts +2 -2
  171. package/src/data-structures/linked-list/doubly-linked-list.ts +144 -160
  172. package/src/data-structures/linked-list/singly-linked-list.ts +241 -185
  173. package/src/data-structures/priority-queue/max-priority-queue.ts +2 -5
  174. package/src/data-structures/priority-queue/min-priority-queue.ts +2 -5
  175. package/src/data-structures/priority-queue/priority-queue.ts +2 -2
  176. package/src/data-structures/queue/deque.ts +286 -183
  177. package/src/data-structures/queue/queue.ts +149 -63
  178. package/src/data-structures/stack/stack.ts +3 -18
  179. package/src/data-structures/trie/trie.ts +7 -3
  180. package/src/types/data-structures/base/base.ts +17 -8
  181. package/src/types/data-structures/binary-tree/avl-tree-multi-map.ts +1 -1
  182. package/src/types/data-structures/binary-tree/binary-tree.ts +1 -0
  183. package/src/types/data-structures/binary-tree/bst.ts +1 -1
  184. package/src/types/data-structures/binary-tree/tree-multi-map.ts +1 -1
  185. package/src/types/data-structures/linked-list/doubly-linked-list.ts +2 -2
  186. package/src/types/data-structures/linked-list/singly-linked-list.ts +2 -2
  187. package/src/types/data-structures/queue/deque.ts +2 -3
  188. package/src/types/data-structures/queue/queue.ts +2 -2
  189. package/src/utils/utils.ts +2 -2
  190. package/test/integration/all-in-one.test.ts +1 -1
  191. package/test/integration/avl-tree.test.ts +1 -1
  192. package/test/integration/bst.test.ts +2 -2
  193. package/test/integration/compile.mjs +21 -21
  194. package/test/performance/data-structures/binary-tree/avl-tree.test.mjs +71 -0
  195. package/test/performance/data-structures/binary-tree/red-black-tree.test.mjs +81 -0
  196. package/test/performance/{reportor.js → reportor.mjs} +264 -8
  197. package/test/performance/reportor.ts +1 -1
  198. package/test/unit/data-structures/binary-tree/avl-tree-counter.test.ts +7 -7
  199. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +172 -5
  200. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +72 -4
  201. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +132 -82
  202. package/test/unit/data-structures/binary-tree/bst.test.ts +12 -12
  203. package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +5 -13
  204. package/test/unit/data-structures/binary-tree/tree-counter.test.ts +4 -4
  205. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +168 -10
  206. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +135 -27
  207. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +111 -11
  208. package/test/unit/data-structures/queue/deque.test.ts +241 -60
  209. package/test/unit/data-structures/queue/queue.test.ts +118 -19
  210. package/test/unit/unrestricted-interconversion.test.ts +1 -1
  211. package/test/utils/json2html.ts +0 -154
  212. package/test/performance/data-structures/binary-tree/avl-tree.test.js +0 -45
  213. /package/test/performance/data-structures/binary-tree/{rb-tree.test.ts → red-black-tree.test.ts} +0 -0
@@ -1,95 +1,55 @@
1
- import { IterableElementBase } from '../base';
2
- export class SinglyLinkedListNode {
1
+ import { LinearLinkedBase, LinkedListNode } from '../base/linear-base';
2
+ export class SinglyLinkedListNode extends LinkedListNode {
3
3
  /**
4
4
  * The constructor function initializes an instance of a class with a given value and sets the next property to undefined.
5
5
  * @param {E} value - The "value" parameter is of type E, which means it can be any data type. It represents the value that
6
6
  * will be stored in the node of a linked list.
7
7
  */
8
8
  constructor(value) {
9
+ super(value);
9
10
  this._value = value;
10
11
  this._next = undefined;
11
12
  }
12
- _value;
13
- /**
14
- * The function returns the value of a protected variable.
15
- * @returns The value of the variable `_value` is being returned.
16
- */
17
- get value() {
18
- return this._value;
19
- }
20
- /**
21
- * The above function sets the value of a variable.
22
- * @param {E} value - The parameter "value" is of type E, which means it can be any type.
23
- */
24
- set value(value) {
25
- this._value = value;
26
- }
27
13
  _next;
28
- /**
29
- * The `next` function returns the next node in a singly linked list.
30
- * @returns The `next` property is being returned. It can be either a `SinglyLinkedListNode<E>`
31
- * object or `undefined`.
32
- */
33
14
  get next() {
34
15
  return this._next;
35
16
  }
36
- /**
37
- * The "next" property of a SinglyLinkedListNode is set to the provided value.
38
- * @param {SinglyLinkedListNode<E> | undefined} value - The `value` parameter is of type
39
- * `SinglyLinkedListNode<E> | undefined`. This means that it can accept either a
40
- * `SinglyLinkedListNode` object or `undefined` as its value.
41
- */
42
17
  set next(value) {
43
18
  this._next = value;
44
19
  }
45
20
  }
46
21
  /**
22
+ * 1. Node Structure: Each node contains three parts: a data field, a pointer (or reference) to the previous node, and a pointer to the next node. This structure allows traversal of the linked list in both directions.
23
+ * 2. Bidirectional Traversal: Unlike doubly linked lists, singly linked lists can be easily traversed forwards but not backwards.
24
+ * 3. No Centralized Index: Unlike arrays, elements in a linked list are not stored contiguously, so there is no centralized index. Accessing elements in a linked list typically requires traversing from the head or tail node.
25
+ * 4. High Efficiency in Insertion and Deletion: Adding or removing elements in a linked list does not require moving other elements, making these operations more efficient than in arrays.
26
+ * Caution: Although our linked list classes provide methods such as at, setAt, addAt, and indexOf that are based on array indices, their time complexity, like that of the native Array.lastIndexOf, is 𝑂(𝑛). If you need to use these methods frequently, you might want to consider other data structures, such as Deque or Queue (designed for random access). Similarly, since the native Array.shift method has a time complexity of 𝑂(𝑛), using an array to simulate a queue can be inefficient. In such cases, you should use Queue or Deque, as these data structures leverage deferred array rearrangement, effectively reducing the average time complexity to 𝑂(1).
47
27
  *
48
28
  */
49
- export class SinglyLinkedList extends IterableElementBase {
29
+ export class SinglyLinkedList extends LinearLinkedBase {
50
30
  constructor(elements = [], options) {
51
31
  super(options);
32
+ if (options) {
33
+ }
52
34
  this.pushMany(elements);
53
35
  }
54
36
  _head;
55
- /**
56
- * The `head` function returns the first node of a singly linked list.
57
- * @returns The method is returning either a SinglyLinkedListNode object or undefined.
58
- */
59
37
  get head() {
60
38
  return this._head;
61
39
  }
62
40
  _tail;
63
- /**
64
- * The `tail` function returns the last node of a singly linked list.
65
- * @returns The method is returning either a SinglyLinkedListNode object or undefined.
66
- */
67
41
  get tail() {
68
42
  return this._tail;
69
43
  }
70
- /**
71
- * The above function returns the value of the first element in a linked list, or undefined if the
72
- * list is empty.
73
- * @returns The value of the first node in the linked list, or undefined if the linked list is empty.
74
- */
75
44
  get first() {
76
45
  return this.head?.value;
77
46
  }
78
- /**
79
- * The function returns the value of the last element in a linked list, or undefined if the list is
80
- * empty.
81
- * @returns The value of the last node in the linked list, or undefined if the linked list is empty.
82
- */
83
47
  get last() {
84
48
  return this.tail?.value;
85
49
  }
86
- _size = 0;
87
- /**
88
- * The function returns the size of an object.
89
- * @returns The size of the object, which is a number.
90
- */
91
- get size() {
92
- return this._size;
50
+ _length = 0;
51
+ get length() {
52
+ return this._length;
93
53
  }
94
54
  /**
95
55
  * Time Complexity: O(n)
@@ -126,7 +86,9 @@ export class SinglyLinkedList extends IterableElementBase {
126
86
  this.tail.next = newNode;
127
87
  this._tail = newNode;
128
88
  }
129
- this._size++;
89
+ this._length++;
90
+ if (this._maxLen > 0 && this.length > this._maxLen)
91
+ this.shift();
130
92
  return true;
131
93
  }
132
94
  /**
@@ -144,7 +106,7 @@ export class SinglyLinkedList extends IterableElementBase {
144
106
  const value = this.head.value;
145
107
  this._head = undefined;
146
108
  this._tail = undefined;
147
- this._size--;
109
+ this._length--;
148
110
  return value;
149
111
  }
150
112
  let current = this.head;
@@ -154,7 +116,7 @@ export class SinglyLinkedList extends IterableElementBase {
154
116
  const value = this.tail.value;
155
117
  current.next = undefined;
156
118
  this._tail = current;
157
- this._size--;
119
+ this._length--;
158
120
  return value;
159
121
  }
160
122
  /**
@@ -169,7 +131,7 @@ export class SinglyLinkedList extends IterableElementBase {
169
131
  return undefined;
170
132
  const removedNode = this.head;
171
133
  this._head = this.head.next;
172
- this._size--;
134
+ this._length--;
173
135
  return removedNode.value;
174
136
  }
175
137
  /**
@@ -193,7 +155,7 @@ export class SinglyLinkedList extends IterableElementBase {
193
155
  newNode.next = this.head;
194
156
  this._head = newNode;
195
157
  }
196
- this._size++;
158
+ this._length++;
197
159
  return true;
198
160
  }
199
161
  /**
@@ -276,7 +238,7 @@ export class SinglyLinkedList extends IterableElementBase {
276
238
  * `undefined` if the index is out of bounds.
277
239
  */
278
240
  at(index) {
279
- if (index < 0 || index >= this._size)
241
+ if (index < 0 || index >= this._length)
280
242
  return undefined;
281
243
  let current = this.head;
282
244
  for (let i = 0; i < index; i++) {
@@ -328,21 +290,25 @@ export class SinglyLinkedList extends IterableElementBase {
328
290
  * bounds.
329
291
  */
330
292
  deleteAt(index) {
331
- if (index < 0 || index >= this._size)
332
- return false;
293
+ if (index < 0 || index >= this._length)
294
+ return;
295
+ let deleted;
333
296
  if (index === 0) {
297
+ deleted = this.first;
334
298
  this.shift();
335
- return true;
299
+ return deleted;
336
300
  }
337
- if (index === this._size - 1) {
338
- this.pop();
339
- return true;
301
+ const targetNode = this.getNodeAt(index);
302
+ const prevNode = this._getPrevNode(targetNode);
303
+ if (prevNode && targetNode) {
304
+ deleted = targetNode.value;
305
+ prevNode.next = targetNode.next;
306
+ if (targetNode === this.tail)
307
+ this._tail = prevNode;
308
+ this._length--;
309
+ return deleted;
340
310
  }
341
- const prevNode = this.getNodeAt(index - 1);
342
- const removedNode = prevNode.next;
343
- prevNode.next = removedNode.next;
344
- this._size--;
345
- return true;
311
+ return;
346
312
  }
347
313
  /**
348
314
  * Time Complexity: O(n)
@@ -355,37 +321,25 @@ export class SinglyLinkedList extends IterableElementBase {
355
321
  * successfully deleted from the linked list, and `false` if the value or node is not found in the linked list.
356
322
  */
357
323
  delete(elementOrNode) {
358
- if (elementOrNode === undefined)
324
+ if (elementOrNode === undefined || !this.head)
325
+ return false;
326
+ const node = this.isNode(elementOrNode) ? elementOrNode : this.getNode(elementOrNode);
327
+ if (!node)
359
328
  return false;
360
- let value;
361
- if (elementOrNode instanceof SinglyLinkedListNode) {
362
- value = elementOrNode.value;
329
+ const prevNode = this._getPrevNode(node);
330
+ if (!prevNode) {
331
+ // The node is the head
332
+ this._head = node.next;
333
+ if (node === this.tail)
334
+ this._tail = undefined;
363
335
  }
364
336
  else {
365
- value = elementOrNode;
337
+ prevNode.next = node.next;
338
+ if (node === this.tail)
339
+ this._tail = prevNode;
366
340
  }
367
- let current = this.head, prev = undefined;
368
- while (current) {
369
- if (current.value === value) {
370
- if (prev === undefined) {
371
- this._head = current.next;
372
- if (current === this.tail) {
373
- this._tail = undefined;
374
- }
375
- }
376
- else {
377
- prev.next = current.next;
378
- if (current === this.tail) {
379
- this._tail = prev;
380
- }
381
- }
382
- this._size--;
383
- return true;
384
- }
385
- prev = current;
386
- current = current.next;
387
- }
388
- return false;
341
+ this._length--;
342
+ return true;
389
343
  }
390
344
  /**
391
345
  * Time Complexity: O(n)
@@ -403,13 +357,13 @@ export class SinglyLinkedList extends IterableElementBase {
403
357
  * successfully added at the specified index, and `false` if the index is out of bounds.
404
358
  */
405
359
  addAt(index, newElementOrNode) {
406
- if (index < 0 || index > this._size)
360
+ if (index < 0 || index > this._length)
407
361
  return false;
408
362
  if (index === 0) {
409
363
  this.unshift(newElementOrNode);
410
364
  return true;
411
365
  }
412
- if (index === this._size) {
366
+ if (index === this._length) {
413
367
  this.push(newElementOrNode);
414
368
  return true;
415
369
  }
@@ -417,9 +371,31 @@ export class SinglyLinkedList extends IterableElementBase {
417
371
  const prevNode = this.getNodeAt(index - 1);
418
372
  newNode.next = prevNode.next;
419
373
  prevNode.next = newNode;
420
- this._size++;
374
+ this._length++;
421
375
  return true;
422
376
  }
377
+ /**
378
+ * Time Complexity: O(n)
379
+ * Space Complexity: O(1)
380
+ *
381
+ * The function setAt(index, value) updates the value at a specified index in a data structure if the
382
+ * index exists.
383
+ * @param {number} index - The `index` parameter in the `setAt` method refers to the position in the
384
+ * data structure where you want to set a new value.
385
+ * @param {E} value - The `value` parameter in the `setAt` method represents the new value that you
386
+ * want to set at the specified index in the data structure.
387
+ * @returns The `setAt` method returns a boolean value - `true` if the value at the specified index
388
+ * is successfully updated, and `false` if the index is out of bounds (i.e., the node at that index
389
+ * does not exist).
390
+ */
391
+ setAt(index, value) {
392
+ const node = this.getNodeAt(index);
393
+ if (node) {
394
+ node.value = value;
395
+ return true;
396
+ }
397
+ return false;
398
+ }
423
399
  /**
424
400
  * Time Complexity: O(1)
425
401
  * Space Complexity: O(1)
@@ -429,7 +405,7 @@ export class SinglyLinkedList extends IterableElementBase {
429
405
  * @returns A boolean value indicating whether the length of the object is equal to 0.
430
406
  */
431
407
  isEmpty() {
432
- return this._size === 0;
408
+ return this._length === 0;
433
409
  }
434
410
  /**
435
411
  * Time Complexity: O(1)
@@ -440,23 +416,7 @@ export class SinglyLinkedList extends IterableElementBase {
440
416
  clear() {
441
417
  this._head = undefined;
442
418
  this._tail = undefined;
443
- this._size = 0;
444
- }
445
- /**
446
- * Time Complexity: O(n)
447
- * Space Complexity: O(n)
448
- *
449
- * The `toArray` function converts a linked list into an array.
450
- * @returns The `toArray()` method is returning an array of type `E[]`.
451
- */
452
- toArray() {
453
- const array = [];
454
- let current = this.head;
455
- while (current) {
456
- array.push(current.value);
457
- current = current.next;
458
- }
459
- return array;
419
+ this._length = 0;
460
420
  }
461
421
  /**
462
422
  * Time Complexity: O(n)
@@ -480,32 +440,6 @@ export class SinglyLinkedList extends IterableElementBase {
480
440
  [this._head, this._tail] = [this.tail, this.head];
481
441
  return this;
482
442
  }
483
- /**
484
- * Time Complexity: O(n)
485
- * Space Complexity: O(1)
486
- *
487
- * The `indexOf` function in TypeScript searches for a specific element or node in a singly linked
488
- * list and returns its index if found.
489
- * @param {E | SinglyLinkedListNode<E> | ((node: SinglyLinkedListNode<E>) => boolean)} elementNodeOrPredicate
490
- * elementNodeOrPredicate - The `elementNodeOrPredicate` parameter in the `indexOf` method can be one
491
- * of the following types:
492
- * @returns The `indexOf` method returns the index of the first occurrence of the element that
493
- * matches the provided predicate in the singly linked list. If no matching element is found, it
494
- * returns -1.
495
- */
496
- indexOf(elementNodeOrPredicate) {
497
- const predicate = this._ensurePredicate(elementNodeOrPredicate);
498
- let index = 0;
499
- let current = this.head;
500
- while (current) {
501
- if (predicate(current)) {
502
- return index;
503
- }
504
- index++;
505
- current = current.next;
506
- }
507
- return -1;
508
- }
509
443
  /**
510
444
  * Time Complexity: O(n)
511
445
  * Space Complexity: O(1)
@@ -522,6 +456,8 @@ export class SinglyLinkedList extends IterableElementBase {
522
456
  getNode(elementNodeOrPredicate) {
523
457
  if (elementNodeOrPredicate === undefined)
524
458
  return;
459
+ if (this.isNode(elementNodeOrPredicate))
460
+ return elementNodeOrPredicate;
525
461
  const predicate = this._ensurePredicate(elementNodeOrPredicate);
526
462
  let current = this.head;
527
463
  while (current) {
@@ -549,31 +485,21 @@ export class SinglyLinkedList extends IterableElementBase {
549
485
  * unsuccessful.
550
486
  */
551
487
  addBefore(existingElementOrNode, newElementOrNode) {
552
- if (!this.head)
488
+ const existingNode = this.getNode(existingElementOrNode);
489
+ if (!existingNode)
553
490
  return false;
554
- let existingValue;
555
- if (this.isNode(existingElementOrNode)) {
556
- existingValue = existingElementOrNode.value;
491
+ const prevNode = this._getPrevNode(existingNode);
492
+ const newNode = this._ensureNode(newElementOrNode);
493
+ if (!prevNode) {
494
+ // Add at the head
495
+ this.unshift(newNode);
557
496
  }
558
497
  else {
559
- existingValue = existingElementOrNode;
560
- }
561
- if (this.head.value === existingValue) {
562
- this.unshift(newElementOrNode);
563
- return true;
564
- }
565
- let current = this.head;
566
- while (current.next) {
567
- if (current.next.value === existingValue) {
568
- const newNode = this._ensureNode(newElementOrNode);
569
- newNode.next = current.next;
570
- current.next = newNode;
571
- this._size++;
572
- return true;
573
- }
574
- current = current.next;
498
+ prevNode.next = newNode;
499
+ newNode.next = existingNode;
500
+ this._length++;
575
501
  }
576
- return false;
502
+ return true;
577
503
  }
578
504
  /**
579
505
  * Time Complexity: O(n)
@@ -600,11 +526,74 @@ export class SinglyLinkedList extends IterableElementBase {
600
526
  if (existingNode === this.tail) {
601
527
  this._tail = newNode;
602
528
  }
603
- this._size++;
529
+ this._length++;
604
530
  return true;
605
531
  }
606
532
  return false;
607
533
  }
534
+ /**
535
+ * Time Complexity: O(n)
536
+ * Space Complexity: O(1)
537
+ *
538
+ * The function `splice` in TypeScript overrides the default behavior to remove and insert elements
539
+ * in a singly linked list while handling boundary cases.
540
+ * @param {number} start - The `start` parameter in the `splice` method indicates the index at which
541
+ * to start modifying the list. It specifies the position where elements will be added or removed.
542
+ * @param {number} [deleteCount=0] - The `deleteCount` parameter in the `splice` method specifies the
543
+ * number of elements to remove from the array starting at the specified `start` index. If
544
+ * `deleteCount` is not provided, it defaults to 0, meaning no elements will be removed but new
545
+ * elements can still be inserted at
546
+ * @param {E[]} items - The `items` parameter in the `splice` method represents the elements to be
547
+ * inserted into the list at the specified `start` index. These elements will be inserted in place of
548
+ * the elements that are removed from the list. The `splice` method allows you to add new elements to
549
+ * the list while
550
+ * @returns The `splice` method is returning a `SinglyLinkedList` containing the elements that were
551
+ * removed from the original list during the splice operation.
552
+ */
553
+ splice(start, deleteCount = 0, ...items) {
554
+ const removedList = this._createInstance({ toElementFn: this._toElementFn, maxLen: this._maxLen });
555
+ // If `start` is out of range, perform boundary processing
556
+ start = Math.max(0, Math.min(start, this.length));
557
+ deleteCount = Math.max(0, deleteCount);
558
+ // Find the predecessor node of `start`
559
+ const prevNode = start === 0 ? undefined : this.getNodeAt(start - 1);
560
+ const startNode = prevNode ? prevNode.next : this.head;
561
+ let current = startNode;
562
+ for (let i = 0; i < deleteCount && current; i++) {
563
+ removedList.push(current.value);
564
+ current = current.next;
565
+ }
566
+ const nextNode = current;
567
+ let lastInsertedNode = undefined;
568
+ for (const item of items) {
569
+ const newNode = this._ensureNode(item);
570
+ if (!lastInsertedNode) {
571
+ if (prevNode) {
572
+ prevNode.next = newNode;
573
+ }
574
+ else {
575
+ this._head = newNode;
576
+ }
577
+ }
578
+ else {
579
+ lastInsertedNode.next = newNode;
580
+ }
581
+ lastInsertedNode = newNode;
582
+ }
583
+ // Connect new node to `nextNode`
584
+ if (lastInsertedNode) {
585
+ lastInsertedNode.next = nextNode;
586
+ }
587
+ else if (prevNode) {
588
+ prevNode.next = nextNode;
589
+ }
590
+ // Update tail node and length
591
+ if (!nextNode) {
592
+ this._tail = lastInsertedNode || prevNode;
593
+ }
594
+ this._length += items.length - removedList.length;
595
+ return removedList;
596
+ }
608
597
  /**
609
598
  * Time Complexity: O(n)
610
599
  * Space Complexity: O(1)
@@ -638,7 +627,7 @@ export class SinglyLinkedList extends IterableElementBase {
638
627
  * is a clone of the original list.
639
628
  */
640
629
  clone() {
641
- return new SinglyLinkedList(this, { toElementFn: this.toElementFn });
630
+ return new SinglyLinkedList(this, { toElementFn: this.toElementFn, maxLen: this._maxLen });
642
631
  }
643
632
  /**
644
633
  * Time Complexity: O(n)
@@ -658,7 +647,7 @@ export class SinglyLinkedList extends IterableElementBase {
658
647
  * elements that pass the filter condition specified by the `callback` function.
659
648
  */
660
649
  filter(callback, thisArg) {
661
- const filteredList = new SinglyLinkedList([], { toElementFn: this.toElementFn });
650
+ const filteredList = this._createInstance({ toElementFn: this.toElementFn, maxLen: this._maxLen });
662
651
  let index = 0;
663
652
  for (const current of this) {
664
653
  if (callback.call(thisArg, current, index, this)) {
@@ -689,7 +678,7 @@ export class SinglyLinkedList extends IterableElementBase {
689
678
  * @returns a new instance of the `SinglyLinkedList` class with the mapped elements.
690
679
  */
691
680
  map(callback, toElementFn, thisArg) {
692
- const mappedList = new SinglyLinkedList([], { toElementFn });
681
+ const mappedList = new SinglyLinkedList([], { toElementFn, maxLen: this._maxLen });
693
682
  let index = 0;
694
683
  for (const current of this) {
695
684
  mappedList.push(callback.call(thisArg, current, index, this));
@@ -697,6 +686,19 @@ export class SinglyLinkedList extends IterableElementBase {
697
686
  }
698
687
  return mappedList;
699
688
  }
689
+ /**
690
+ * The function `_createInstance` returns a new instance of `SinglyLinkedList` with the specified
691
+ * options.
692
+ * @param [options] - The `options` parameter in the `_createInstance` method is of type
693
+ * `SinglyLinkedListOptions<E, R>`, which is used to configure the behavior of the `SinglyLinkedList`
694
+ * instance being created. It is an optional parameter, meaning it can be omitted when calling the
695
+ * method.
696
+ * @returns An instance of the `SinglyLinkedList` class with an empty array and the provided options
697
+ * is being returned.
698
+ */
699
+ _createInstance(options) {
700
+ return new SinglyLinkedList([], options);
701
+ }
700
702
  /**
701
703
  * The function `_getIterator` returns an iterable iterator that yields the values of a linked list.
702
704
  */
@@ -707,6 +709,33 @@ export class SinglyLinkedList extends IterableElementBase {
707
709
  current = current.next;
708
710
  }
709
711
  }
712
+ /**
713
+ * The function returns an iterator that iterates over the elements of a collection in reverse order.
714
+ */
715
+ *_getReverseIterator() {
716
+ const reversedArr = [...this].reverse();
717
+ for (const item of reversedArr) {
718
+ yield item;
719
+ }
720
+ }
721
+ /**
722
+ * The function `_getNodeIterator` returns an iterator that iterates over the nodes of a singly
723
+ * linked list.
724
+ */
725
+ *_getNodeIterator() {
726
+ let current = this.head;
727
+ while (current) {
728
+ yield current;
729
+ current = current.next;
730
+ }
731
+ }
732
+ // protected *_getReverseNodeIterator(): IterableIterator<SinglyLinkedListNode<E>> {
733
+ // const reversedArr = [...this._getNodeIterator()].reverse();
734
+ //
735
+ // for (const item of reversedArr) {
736
+ // yield item;
737
+ // }
738
+ // }
710
739
  /**
711
740
  * The _isPredicate function in TypeScript checks if the input is a function that takes a
712
741
  * SinglyLinkedListNode as an argument and returns a boolean.
@@ -749,5 +778,23 @@ export class SinglyLinkedList extends IterableElementBase {
749
778
  return elementNodeOrPredicate;
750
779
  return (node) => node.value === elementNodeOrPredicate;
751
780
  }
781
+ /**
782
+ * The function `_getPrevNode` returns the node before a given node in a singly linked list.
783
+ * @param node - The `node` parameter in the `_getPrevNode` method is a reference to a node in a
784
+ * singly linked list. The method is used to find the node that comes before the given node in the
785
+ * linked list.
786
+ * @returns The `_getPrevNode` method returns either the previous node of the input node in a singly
787
+ * linked list or `undefined` if the input node is the head of the list or if the input node is not
788
+ * found in the list.
789
+ */
790
+ _getPrevNode(node) {
791
+ if (!this.head || this.head === node)
792
+ return undefined;
793
+ let current = this.head;
794
+ while (current.next && current.next !== node) {
795
+ current = current.next;
796
+ }
797
+ return current.next === node ? current : undefined;
798
+ }
752
799
  }
753
800
  //# sourceMappingURL=singly-linked-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"singly-linked-list.js","sourceRoot":"","sources":["../../../../src/data-structures/linked-list/singly-linked-list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"singly-linked-list.js","sourceRoot":"","sources":["../../../../src/data-structures/linked-list/singly-linked-list.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,7 @@ export declare class MaxPriorityQueue<E = any, R = any> extends PriorityQueue<E,
45
45
  * @returns The `filter` method is returning a new `MaxPriorityQueue` object that contains the elements that pass
46
46
  * the filter condition specified by the `callback` function.
47
47
  */
48
- filter(callback: ElementCallback<E, R, boolean, MaxPriorityQueue<E, R>>, thisArg?: any): MaxPriorityQueue<E, R>;
48
+ filter(callback: ElementCallback<E, R, boolean>, thisArg?: any): MaxPriorityQueue<E, R>;
49
49
  /**
50
50
  * Time Complexity: O(n log n)
51
51
  * Space Complexity: O(n)
@@ -67,5 +67,5 @@ export declare class MaxPriorityQueue<E = any, R = any> extends PriorityQueue<E,
67
67
  * value of
68
68
  * @returns a new instance of the `MaxPriorityQueue` class with the mapped elements.
69
69
  */
70
- map<EM, RM>(callback: ElementCallback<E, R, EM, MaxPriorityQueue<E, R>>, comparator: Comparator<EM>, toElementFn?: (rawElement: RM) => EM, thisArg?: any): MaxPriorityQueue<EM, RM>;
70
+ map<EM, RM>(callback: ElementCallback<E, R, EM>, comparator: Comparator<EM>, toElementFn?: (rawElement: RM) => EM, thisArg?: any): MaxPriorityQueue<EM, RM>;
71
71
  }