data-structure-typed 2.4.5 → 2.5.1

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 (240) hide show
  1. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +12984 -0
  2. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +3 -0
  3. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +4505 -0
  4. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +9731 -0
  5. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +347 -0
  6. package/CHANGELOG.md +3 -1
  7. package/README.md +78 -31
  8. package/dist/cjs/binary-tree.cjs +23698 -0
  9. package/dist/cjs/graph.cjs +5236 -0
  10. package/dist/cjs/hash.cjs +1262 -0
  11. package/dist/cjs/heap.cjs +1540 -0
  12. package/dist/cjs/index.cjs +24509 -2899
  13. package/dist/cjs/linked-list.cjs +4370 -0
  14. package/dist/cjs/matrix.cjs +1042 -0
  15. package/dist/cjs/priority-queue.cjs +1314 -0
  16. package/dist/cjs/queue.cjs +4090 -0
  17. package/dist/cjs/stack.cjs +861 -0
  18. package/dist/cjs/trie.cjs +1173 -0
  19. package/dist/cjs-legacy/binary-tree.cjs +23730 -0
  20. package/dist/cjs-legacy/graph.cjs +5234 -0
  21. package/dist/cjs-legacy/hash.cjs +1262 -0
  22. package/dist/cjs-legacy/heap.cjs +1537 -0
  23. package/dist/cjs-legacy/index.cjs +32555 -10936
  24. package/dist/cjs-legacy/linked-list.cjs +4376 -0
  25. package/dist/cjs-legacy/matrix.cjs +1045 -0
  26. package/dist/cjs-legacy/priority-queue.cjs +1312 -0
  27. package/dist/cjs-legacy/queue.cjs +4088 -0
  28. package/dist/cjs-legacy/stack.cjs +861 -0
  29. package/dist/cjs-legacy/trie.cjs +1172 -0
  30. package/dist/esm/binary-tree.mjs +23683 -0
  31. package/dist/esm/graph.mjs +5223 -0
  32. package/dist/esm/hash.mjs +1259 -0
  33. package/dist/esm/heap.mjs +1534 -0
  34. package/dist/esm/index.mjs +24507 -2898
  35. package/dist/esm/linked-list.mjs +4363 -0
  36. package/dist/esm/matrix.mjs +1038 -0
  37. package/dist/esm/priority-queue.mjs +1310 -0
  38. package/dist/esm/queue.mjs +4086 -0
  39. package/dist/esm/stack.mjs +859 -0
  40. package/dist/esm/trie.mjs +1170 -0
  41. package/dist/esm-legacy/binary-tree.mjs +23715 -0
  42. package/dist/esm-legacy/graph.mjs +5221 -0
  43. package/dist/esm-legacy/hash.mjs +1259 -0
  44. package/dist/esm-legacy/heap.mjs +1531 -0
  45. package/dist/esm-legacy/index.mjs +32553 -10935
  46. package/dist/esm-legacy/linked-list.mjs +4369 -0
  47. package/dist/esm-legacy/matrix.mjs +1041 -0
  48. package/dist/esm-legacy/priority-queue.mjs +1308 -0
  49. package/dist/esm-legacy/queue.mjs +4084 -0
  50. package/dist/esm-legacy/stack.mjs +859 -0
  51. package/dist/esm-legacy/trie.mjs +1169 -0
  52. package/dist/types/data-structures/base/index.d.ts +1 -0
  53. package/dist/types/data-structures/base/iterable-element-base.d.ts +1 -1
  54. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  55. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  56. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +368 -51
  57. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +473 -147
  58. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +931 -80
  59. package/dist/types/data-structures/binary-tree/bst.d.ts +792 -29
  60. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +592 -32
  61. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +320 -135
  62. package/dist/types/data-structures/binary-tree/tree-map.d.ts +3662 -6
  63. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3487 -201
  64. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2778 -65
  65. package/dist/types/data-structures/binary-tree/tree-set.d.ts +3414 -6
  66. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  67. package/dist/types/data-structures/graph/directed-graph.d.ts +419 -47
  68. package/dist/types/data-structures/graph/map-graph.d.ts +59 -1
  69. package/dist/types/data-structures/graph/undirected-graph.d.ts +384 -59
  70. package/dist/types/data-structures/hash/hash-map.d.ts +462 -89
  71. package/dist/types/data-structures/heap/heap.d.ts +567 -99
  72. package/dist/types/data-structures/heap/max-heap.d.ts +46 -0
  73. package/dist/types/data-structures/heap/min-heap.d.ts +59 -0
  74. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +631 -49
  75. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +581 -68
  76. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +775 -12
  77. package/dist/types/data-structures/matrix/matrix.d.ts +491 -0
  78. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +57 -0
  79. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +60 -0
  80. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +60 -0
  81. package/dist/types/data-structures/queue/deque.d.ts +578 -71
  82. package/dist/types/data-structures/queue/queue.d.ts +451 -42
  83. package/dist/types/data-structures/stack/stack.d.ts +374 -32
  84. package/dist/types/data-structures/trie/trie.d.ts +458 -48
  85. package/dist/types/interfaces/graph.d.ts +1 -1
  86. package/dist/types/types/common.d.ts +2 -2
  87. package/dist/types/types/data-structures/binary-tree/segment-tree.d.ts +1 -1
  88. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  89. package/dist/types/types/data-structures/linked-list/skip-linked-list.d.ts +1 -4
  90. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  91. package/dist/types/types/utils/validate-type.d.ts +4 -4
  92. package/dist/umd/data-structure-typed.js +32432 -10808
  93. package/dist/umd/data-structure-typed.min.js +10 -4
  94. package/docs-site-docusaurus/README.md +41 -0
  95. package/docs-site-docusaurus/docs/api/README.md +52 -0
  96. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6130 -0
  97. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
  98. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
  99. package/docs-site-docusaurus/docs/api/classes/BST.md +5831 -0
  100. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
  101. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
  102. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
  103. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
  104. package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
  105. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
  106. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
  107. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
  108. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
  109. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
  110. package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
  111. package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
  112. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
  113. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
  114. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
  115. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
  116. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
  117. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
  118. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
  119. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
  120. package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
  121. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
  122. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
  123. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
  124. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
  125. package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
  126. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
  127. package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
  128. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6374 -0
  129. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
  130. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
  131. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
  132. package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
  133. package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
  134. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1257 -0
  135. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1475 -0
  136. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1117 -0
  137. package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
  138. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
  139. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
  140. package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
  141. package/docs-site-docusaurus/docs/guide/architecture.md +613 -0
  142. package/docs-site-docusaurus/docs/guide/concepts.md +420 -0
  143. package/docs-site-docusaurus/docs/guide/guides.md +611 -0
  144. package/docs-site-docusaurus/docs/guide/installation.md +60 -0
  145. package/docs-site-docusaurus/docs/guide/integrations.md +823 -0
  146. package/docs-site-docusaurus/docs/guide/overview.md +638 -0
  147. package/docs-site-docusaurus/docs/guide/performance.md +833 -0
  148. package/docs-site-docusaurus/docs/guide/quick-start.md +73 -0
  149. package/docs-site-docusaurus/docusaurus.config.ts +159 -0
  150. package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
  151. package/docs-site-docusaurus/package-lock.json +18667 -0
  152. package/docs-site-docusaurus/package.json +50 -0
  153. package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
  154. package/docs-site-docusaurus/sidebars.ts +23 -0
  155. package/docs-site-docusaurus/sort-protected.mjs +87 -0
  156. package/docs-site-docusaurus/src/css/custom.css +96 -0
  157. package/docs-site-docusaurus/src/pages/index.module.css +13 -0
  158. package/docs-site-docusaurus/src/pages/index.tsx +71 -0
  159. package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
  160. package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
  161. package/docs-site-docusaurus/static/.nojekyll +0 -0
  162. package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
  163. package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
  164. package/docs-site-docusaurus/static/img/favicon.ico +0 -0
  165. package/docs-site-docusaurus/static/img/favicon.png +0 -0
  166. package/docs-site-docusaurus/static/img/logo-180.png +0 -0
  167. package/docs-site-docusaurus/static/img/logo.jpg +0 -0
  168. package/docs-site-docusaurus/static/img/logo.png +0 -0
  169. package/docs-site-docusaurus/static/img/logo.svg +1 -0
  170. package/docs-site-docusaurus/static/img/og-image.png +0 -0
  171. package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
  172. package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
  173. package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
  174. package/docs-site-docusaurus/static/robots.txt +4 -0
  175. package/docs-site-docusaurus/typedoc.json +23 -0
  176. package/package.json +109 -12
  177. package/src/data-structures/base/index.ts +1 -0
  178. package/src/data-structures/base/iterable-element-base.ts +4 -5
  179. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  180. package/src/data-structures/base/linear-base.ts +3 -3
  181. package/src/data-structures/binary-tree/avl-tree.ts +386 -51
  182. package/src/data-structures/binary-tree/binary-indexed-tree.ts +596 -247
  183. package/src/data-structures/binary-tree/binary-tree.ts +956 -81
  184. package/src/data-structures/binary-tree/bst.ts +840 -35
  185. package/src/data-structures/binary-tree/red-black-tree.ts +689 -97
  186. package/src/data-structures/binary-tree/segment-tree.ts +498 -249
  187. package/src/data-structures/binary-tree/tree-map.ts +3784 -7
  188. package/src/data-structures/binary-tree/tree-multi-map.ts +3614 -211
  189. package/src/data-structures/binary-tree/tree-multi-set.ts +2874 -65
  190. package/src/data-structures/binary-tree/tree-set.ts +3531 -10
  191. package/src/data-structures/graph/abstract-graph.ts +4 -4
  192. package/src/data-structures/graph/directed-graph.ts +429 -47
  193. package/src/data-structures/graph/map-graph.ts +59 -1
  194. package/src/data-structures/graph/undirected-graph.ts +393 -59
  195. package/src/data-structures/hash/hash-map.ts +476 -92
  196. package/src/data-structures/heap/heap.ts +581 -99
  197. package/src/data-structures/heap/max-heap.ts +46 -0
  198. package/src/data-structures/heap/min-heap.ts +59 -0
  199. package/src/data-structures/linked-list/doubly-linked-list.ts +646 -47
  200. package/src/data-structures/linked-list/singly-linked-list.ts +596 -68
  201. package/src/data-structures/linked-list/skip-linked-list.ts +1067 -90
  202. package/src/data-structures/matrix/matrix.ts +584 -12
  203. package/src/data-structures/priority-queue/max-priority-queue.ts +57 -0
  204. package/src/data-structures/priority-queue/min-priority-queue.ts +60 -0
  205. package/src/data-structures/priority-queue/priority-queue.ts +60 -0
  206. package/src/data-structures/queue/deque.ts +592 -70
  207. package/src/data-structures/queue/queue.ts +463 -42
  208. package/src/data-structures/stack/stack.ts +384 -32
  209. package/src/data-structures/trie/trie.ts +470 -48
  210. package/src/interfaces/graph.ts +1 -1
  211. package/src/types/common.ts +2 -2
  212. package/src/types/data-structures/binary-tree/segment-tree.ts +1 -1
  213. package/src/types/data-structures/heap/heap.ts +1 -0
  214. package/src/types/data-structures/linked-list/skip-linked-list.ts +2 -1
  215. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  216. package/src/types/utils/validate-type.ts +4 -4
  217. package/vercel.json +6 -0
  218. package/dist/leetcode/avl-tree-counter.mjs +0 -2957
  219. package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
  220. package/dist/leetcode/avl-tree.mjs +0 -2720
  221. package/dist/leetcode/binary-tree.mjs +0 -1594
  222. package/dist/leetcode/bst.mjs +0 -2398
  223. package/dist/leetcode/deque.mjs +0 -683
  224. package/dist/leetcode/directed-graph.mjs +0 -1733
  225. package/dist/leetcode/doubly-linked-list.mjs +0 -709
  226. package/dist/leetcode/hash-map.mjs +0 -493
  227. package/dist/leetcode/heap.mjs +0 -542
  228. package/dist/leetcode/max-heap.mjs +0 -375
  229. package/dist/leetcode/max-priority-queue.mjs +0 -383
  230. package/dist/leetcode/min-heap.mjs +0 -363
  231. package/dist/leetcode/min-priority-queue.mjs +0 -371
  232. package/dist/leetcode/priority-queue.mjs +0 -363
  233. package/dist/leetcode/queue.mjs +0 -943
  234. package/dist/leetcode/red-black-tree.mjs +0 -2765
  235. package/dist/leetcode/singly-linked-list.mjs +0 -754
  236. package/dist/leetcode/stack.mjs +0 -217
  237. package/dist/leetcode/tree-counter.mjs +0 -3039
  238. package/dist/leetcode/tree-multi-map.mjs +0 -2913
  239. package/dist/leetcode/trie.mjs +0 -413
  240. package/dist/leetcode/undirected-graph.mjs +0 -1650
@@ -60,50 +60,6 @@ export declare class DoublyLinkedListNode<E = any> extends LinkedListNode<E> {
60
60
  * 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.
61
61
  * 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).
62
62
  * @example
63
- * // basic DoublyLinkedList creation and push operation
64
- * // Create a simple DoublyLinkedList with initial values
65
- * const list = new DoublyLinkedList([1, 2, 3, 4, 5]);
66
- *
67
- * // Verify the list maintains insertion order
68
- * console.log([...list]); // [1, 2, 3, 4, 5];
69
- *
70
- * // Check length
71
- * console.log(list.length); // 5;
72
- *
73
- * // Push a new element to the end
74
- * list.push(6);
75
- * console.log(list.length); // 6;
76
- * console.log([...list]); // [1, 2, 3, 4, 5, 6];
77
- * @example
78
- * // DoublyLinkedList pop and shift operations
79
- * const list = new DoublyLinkedList<number>([10, 20, 30, 40, 50]);
80
- *
81
- * // Pop removes from the end
82
- * const last = list.pop();
83
- * console.log(last); // 50;
84
- *
85
- * // Shift removes from the beginning
86
- * const first = list.shift();
87
- * console.log(first); // 10;
88
- *
89
- * // Verify remaining elements
90
- * console.log([...list]); // [20, 30, 40];
91
- * console.log(list.length); // 3;
92
- * @example
93
- * // DoublyLinkedList for...of iteration and map operation
94
- * const list = new DoublyLinkedList<number>([1, 2, 3, 4, 5]);
95
- *
96
- * // Iterate through list
97
- * const doubled = list.map(value => value * 2);
98
- * console.log(doubled.length); // 5;
99
- *
100
- * // Use for...of loop
101
- * const result: number[] = [];
102
- * for (const item of list) {
103
- * result.push(item);
104
- * }
105
- * console.log(result); // [1, 2, 3, 4, 5];
106
- * @example
107
63
  * // Browser history
108
64
  * const browserHistory = new DoublyLinkedList<string>();
109
65
  *
@@ -153,6 +109,16 @@ export declare class DoublyLinkedListNode<E = any> extends LinkedListNode<E> {
153
109
  * // Access entry (in real LRU, this would move it to end)
154
110
  * const foundEntry = [...cacheList].find(entry => entry.key === 'user:2');
155
111
  * console.log(foundEntry?.value); // 'Bob';
112
+ * @example
113
+ * // Find first matching element
114
+ * const list = new DoublyLinkedList<number>([5, 10, 15, 20]);
115
+ * console.log(list.find(n => n >= 12)); // 15;
116
+ * @example
117
+ * // Iterate over elements
118
+ * const list = new DoublyLinkedList<number>([1, 2, 3]);
119
+ * const sum: number[] = [];
120
+ * list.forEach(n => sum.push(n));
121
+ * console.log(sum); // [1, 2, 3];
156
122
  */
157
123
  export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase<E, R, DoublyLinkedListNode<E>> {
158
124
  protected _equals: (a: E, b: E) => boolean;
@@ -219,18 +185,146 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
219
185
  * @remarks Time O(1), Space O(1)
220
186
  * @param elementOrNode - Element or node to append.
221
187
  * @returns True when appended.
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+ * @example
220
+ * // basic DoublyLinkedList creation and push operation
221
+ * // Create a simple DoublyLinkedList with initial values
222
+ * const list = new DoublyLinkedList([1, 2, 3, 4, 5]);
223
+ *
224
+ * // Verify the list maintains insertion order
225
+ * console.log([...list]); // [1, 2, 3, 4, 5];
226
+ *
227
+ * // Check length
228
+ * console.log(list.length); // 5;
229
+ *
230
+ * // Push a new element to the end
231
+ * list.push(6);
232
+ * console.log(list.length); // 6;
233
+ * console.log([...list]); // [1, 2, 3, 4, 5, 6];
222
234
  */
223
235
  push(elementOrNode: E | DoublyLinkedListNode<E>): boolean;
224
236
  /**
225
237
  * Remove and return the tail element.
226
238
  * @remarks Time O(1), Space O(1)
227
239
  * @returns Removed element or undefined.
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+ * @example
272
+ * // DoublyLinkedList pop and shift operations
273
+ * const list = new DoublyLinkedList<number>([10, 20, 30, 40, 50]);
274
+ *
275
+ * // Pop removes from the end
276
+ * const last = list.pop();
277
+ * console.log(last); // 50;
278
+ *
279
+ * // Shift removes from the beginning
280
+ * const first = list.shift();
281
+ * console.log(first); // 10;
282
+ *
283
+ * // Verify remaining elements
284
+ * console.log([...list]); // [20, 30, 40];
285
+ * console.log(list.length); // 3;
228
286
  */
229
287
  pop(): E | undefined;
230
288
  /**
231
289
  * Remove and return the head element.
232
290
  * @remarks Time O(1), Space O(1)
233
291
  * @returns Removed element or undefined.
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+
317
+
318
+
319
+
320
+
321
+
322
+
323
+ * @example
324
+ * // Remove from the front
325
+ * const list = new DoublyLinkedList<number>([10, 20, 30]);
326
+ * console.log(list.shift()); // 10;
327
+ * console.log(list.first); // 20;
234
328
  */
235
329
  shift(): E | undefined;
236
330
  /**
@@ -238,6 +332,42 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
238
332
  * @remarks Time O(1), Space O(1)
239
333
  * @param elementOrNode - Element or node to prepend.
240
334
  * @returns True when prepended.
335
+
336
+
337
+
338
+
339
+
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+ * @example
367
+ * // Add to the front
368
+ * const list = new DoublyLinkedList<number>([2, 3]);
369
+ * list.unshift(1);
370
+ * console.log([...list]); // [1, 2, 3];
241
371
  */
242
372
  unshift(elementOrNode: E | DoublyLinkedListNode<E>): boolean;
243
373
  /**
@@ -259,6 +389,42 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
259
389
  * @remarks Time O(N), Space O(1)
260
390
  * @param index - Zero-based index.
261
391
  * @returns Element or undefined.
392
+
393
+
394
+
395
+
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+
416
+
417
+
418
+
419
+
420
+
421
+
422
+
423
+ * @example
424
+ * // Access by index
425
+ * const list = new DoublyLinkedList<string>(['a', 'b', 'c']);
426
+ * console.log(list.at(1)); // 'b';
427
+ * console.log(list.at(2)); // 'c';
262
428
  */
263
429
  at(index: number): E | undefined;
264
430
  /**
@@ -266,6 +432,38 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
266
432
  * @remarks Time O(N), Space O(1)
267
433
  * @param index - Zero-based index.
268
434
  * @returns Node or undefined.
435
+
436
+
437
+
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
+
460
+
461
+
462
+
463
+ * @example
464
+ * // Get node at index
465
+ * const list = new DoublyLinkedList<string>(['a', 'b', 'c']);
466
+ * console.log(list.getNodeAt(1)?.value); // 'b';
269
467
  */
270
468
  getNodeAt(index: number): DoublyLinkedListNode<E> | undefined;
271
469
  /**
@@ -281,6 +479,39 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
281
479
  * @param index - Zero-based index.
282
480
  * @param newElementOrNode - Element or node to insert.
283
481
  * @returns True if inserted.
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
+
490
+
491
+
492
+
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+
501
+
502
+
503
+
504
+
505
+
506
+
507
+
508
+
509
+
510
+ * @example
511
+ * // Insert at position
512
+ * const list = new DoublyLinkedList<number>([1, 3]);
513
+ * list.addAt(1, 2);
514
+ * console.log(list.toArray()); // [1, 2, 3];
284
515
  */
285
516
  addAt(index: number, newElementOrNode: E | DoublyLinkedListNode<E>): boolean;
286
517
  /**
@@ -312,6 +543,39 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
312
543
  * @remarks Time O(N), Space O(1)
313
544
  * @param index - Zero-based index.
314
545
  * @returns Removed element or undefined.
546
+
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+
555
+
556
+
557
+
558
+
559
+
560
+
561
+
562
+
563
+
564
+
565
+
566
+
567
+
568
+
569
+
570
+
571
+
572
+
573
+
574
+ * @example
575
+ * // Remove by index
576
+ * const list = new DoublyLinkedList<string>(['a', 'b', 'c']);
577
+ * list.deleteAt(1);
578
+ * console.log(list.toArray()); // ['a', 'c'];
315
579
  */
316
580
  deleteAt(index: number): E | undefined;
317
581
  /**
@@ -319,18 +583,117 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
319
583
  * @remarks Time O(N), Space O(1)
320
584
  * @param [elementOrNode] - Element or node to remove.
321
585
  * @returns True if removed.
586
+
587
+
588
+
589
+
590
+
591
+
592
+
593
+
594
+
595
+
596
+
597
+
598
+
599
+
600
+
601
+
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+ * @example
615
+ * // Remove first occurrence
616
+ * const list = new DoublyLinkedList<number>([1, 2, 3, 2]);
617
+ * list.delete(2);
618
+ * console.log(list.toArray()); // [1, 3, 2];
322
619
  */
323
620
  delete(elementOrNode: E | DoublyLinkedListNode<E> | undefined): boolean;
324
621
  /**
325
622
  * Check whether the list is empty.
326
623
  * @remarks Time O(1), Space O(1)
327
624
  * @returns True if length is 0.
625
+
626
+
627
+
628
+
629
+
630
+
631
+
632
+
633
+
634
+
635
+
636
+
637
+
638
+
639
+
640
+
641
+
642
+
643
+
644
+
645
+
646
+
647
+
648
+
649
+
650
+
651
+
652
+
653
+
654
+ * @example
655
+ * // Check empty
656
+ * console.log(new DoublyLinkedList().isEmpty()); // true;
328
657
  */
329
658
  isEmpty(): boolean;
330
659
  /**
331
660
  * Remove all nodes and reset length.
332
661
  * @remarks Time O(N), Space O(1)
333
662
  * @returns void
663
+
664
+
665
+
666
+
667
+
668
+
669
+
670
+
671
+
672
+
673
+
674
+
675
+
676
+
677
+
678
+
679
+
680
+
681
+
682
+
683
+
684
+
685
+
686
+
687
+
688
+
689
+
690
+
691
+
692
+ * @example
693
+ * // Remove all
694
+ * const list = new DoublyLinkedList<number>([1, 2]);
695
+ * list.clear();
696
+ * console.log(list.isEmpty()); // true;
334
697
  */
335
698
  clear(): void;
336
699
  /**
@@ -338,6 +701,39 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
338
701
  * @remarks Time O(N), Space O(1)
339
702
  * @param elementNodeOrPredicate - Element, node, or predicate to match.
340
703
  * @returns Matched value or undefined.
704
+
705
+
706
+
707
+
708
+
709
+
710
+
711
+
712
+
713
+
714
+
715
+
716
+
717
+
718
+
719
+
720
+
721
+
722
+
723
+
724
+
725
+
726
+
727
+
728
+
729
+
730
+
731
+
732
+ * @example
733
+ * // Search with predicate
734
+ * const list = new DoublyLinkedList<number>([10, 20, 30]);
735
+ * const found = list.search(node => node.value > 15);
736
+ * console.log(found); // 20;
341
737
  */
342
738
  search(elementNodeOrPredicate: E | DoublyLinkedListNode<E> | ((node: DoublyLinkedListNode<E>) => boolean)): E | undefined;
343
739
  /**
@@ -345,12 +741,82 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
345
741
  * @remarks Time O(N), Space O(1)
346
742
  * @param elementNodeOrPredicate - Element, node, or predicate to match.
347
743
  * @returns Matched value or undefined.
744
+
745
+
746
+
747
+
748
+
749
+
750
+
751
+
752
+
753
+
754
+
755
+
756
+
757
+
758
+
759
+
760
+
761
+
762
+
763
+
764
+
765
+
766
+
767
+
768
+
769
+
770
+
771
+
772
+ * @example
773
+ * // Find value scanning from tail
774
+ * const list = new DoublyLinkedList<number>([1, 2, 3, 4]);
775
+ * // getBackward scans from tail to head, returns first match
776
+ * const found = list.getBackward(node => node.value < 4);
777
+ * console.log(found); // 3;
348
778
  */
349
779
  getBackward(elementNodeOrPredicate: E | DoublyLinkedListNode<E> | ((node: DoublyLinkedListNode<E>) => boolean)): E | undefined;
350
780
  /**
351
781
  * Reverse the list in place.
352
782
  * @remarks Time O(N), Space O(1)
353
783
  * @returns This list.
784
+
785
+
786
+
787
+
788
+
789
+
790
+
791
+
792
+
793
+
794
+
795
+
796
+
797
+
798
+
799
+
800
+
801
+
802
+
803
+
804
+
805
+
806
+
807
+
808
+
809
+
810
+
811
+
812
+
813
+
814
+
815
+ * @example
816
+ * // Reverse in-place
817
+ * const list = new DoublyLinkedList<number>([1, 2, 3]);
818
+ * list.reverse();
819
+ * console.log([...list]); // [3, 2, 1];
354
820
  */
355
821
  reverse(): this;
356
822
  /**
@@ -364,6 +830,41 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
364
830
  * Deep clone this list (values are copied by reference).
365
831
  * @remarks Time O(N), Space O(N)
366
832
  * @returns A new list with the same element sequence.
833
+
834
+
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+
843
+
844
+
845
+
846
+
847
+
848
+
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+ * @example
863
+ * // Deep copy
864
+ * const list = new DoublyLinkedList<number>([1, 2, 3]);
865
+ * const copy = list.clone();
866
+ * copy.pop();
867
+ * console.log(list.length); // 3;
367
868
  */
368
869
  clone(): this;
369
870
  /**
@@ -372,8 +873,44 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
372
873
  * @param callback - Predicate (value, index, list) → boolean to keep value.
373
874
  * @param [thisArg] - Value for `this` inside the callback.
374
875
  * @returns A new list with kept values.
375
- */
376
- filter(callback: ElementCallback<E, R, boolean>, thisArg?: any): this;
876
+
877
+
878
+
879
+
880
+
881
+
882
+
883
+
884
+
885
+
886
+
887
+
888
+
889
+
890
+
891
+
892
+
893
+
894
+
895
+
896
+
897
+
898
+
899
+
900
+
901
+
902
+
903
+
904
+
905
+
906
+
907
+ * @example
908
+ * // Filter elements
909
+ * const list = new DoublyLinkedList<number>([1, 2, 3, 4, 5]);
910
+ * const evens = list.filter(n => n % 2 === 0);
911
+ * console.log([...evens]); // [2, 4];
912
+ */
913
+ filter(callback: ElementCallback<E, R, boolean>, thisArg?: unknown): this;
377
914
  /**
378
915
  * Map values into a new list of the same class.
379
916
  * @remarks Time O(N), Space O(N)
@@ -381,7 +918,7 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
381
918
  * @param [thisArg] - Value for `this` inside the callback.
382
919
  * @returns A new list with mapped values.
383
920
  */
384
- mapSame(callback: ElementCallback<E, R, E>, thisArg?: any): this;
921
+ mapSame(callback: ElementCallback<E, R, E>, thisArg?: unknown): this;
385
922
  /**
386
923
  * Map values into a new list (possibly different element type).
387
924
  * @remarks Time O(N), Space O(N)
@@ -391,8 +928,53 @@ export declare class DoublyLinkedList<E = any, R = any> extends LinearLinkedBase
391
928
  * @param [options] - Options for the output list (e.g., maxLen, toElementFn).
392
929
  * @param [thisArg] - Value for `this` inside the callback.
393
930
  * @returns A new DoublyLinkedList with mapped values.
394
- */
395
- map<EM, RM>(callback: ElementCallback<E, R, EM>, options?: DoublyLinkedListOptions<EM, RM>, thisArg?: any): DoublyLinkedList<EM, RM>;
931
+
932
+
933
+
934
+
935
+
936
+
937
+
938
+
939
+
940
+
941
+
942
+
943
+
944
+
945
+
946
+
947
+
948
+
949
+
950
+
951
+
952
+
953
+
954
+
955
+
956
+
957
+
958
+
959
+
960
+
961
+
962
+ * @example
963
+ * // DoublyLinkedList for...of iteration and map operation
964
+ * const list = new DoublyLinkedList<number>([1, 2, 3, 4, 5]);
965
+ *
966
+ * // Iterate through list
967
+ * const doubled = list.map(value => value * 2);
968
+ * console.log(doubled.length); // 5;
969
+ *
970
+ * // Use for...of loop
971
+ * const result: number[] = [];
972
+ * for (const item of list) {
973
+ * result.push(item);
974
+ * }
975
+ * console.log(result); // [1, 2, 3, 4, 5];
976
+ */
977
+ map<EM, RM>(callback: ElementCallback<E, R, EM>, options?: DoublyLinkedListOptions<EM, RM>, thisArg?: unknown): DoublyLinkedList<EM, RM>;
396
978
  /**
397
979
  * (Protected) Create or return a node for the given input (node or raw element).
398
980
  * @remarks Time O(1), Space O(1)