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
@@ -46,71 +46,6 @@ export declare class SinglyLinkedListNode<E = any> extends LinkedListNode<E> {
46
46
  * 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.
47
47
  * 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).
48
48
  * @example
49
- * // basic SinglyLinkedList creation and push operation
50
- * // Create a simple SinglyLinkedList with initial values
51
- * const list = new SinglyLinkedList([1, 2, 3, 4, 5]);
52
- *
53
- * // Verify the list maintains insertion order
54
- * console.log([...list]); // [1, 2, 3, 4, 5];
55
- *
56
- * // Check length
57
- * console.log(list.length); // 5;
58
- *
59
- * // Push a new element to the end
60
- * list.push(6);
61
- * console.log(list.length); // 6;
62
- * console.log([...list]); // [1, 2, 3, 4, 5, 6];
63
- * @example
64
- * // SinglyLinkedList pop and shift operations
65
- * const list = new SinglyLinkedList<number>([10, 20, 30, 40, 50]);
66
- *
67
- * // Pop removes from the end
68
- * const last = list.pop();
69
- * console.log(last); // 50;
70
- *
71
- * // Shift removes from the beginning
72
- * const first = list.shift();
73
- * console.log(first); // 10;
74
- *
75
- * // Verify remaining elements
76
- * console.log([...list]); // [20, 30, 40];
77
- * console.log(list.length); // 3;
78
- * @example
79
- * // SinglyLinkedList unshift and forward traversal
80
- * const list = new SinglyLinkedList<number>([20, 30, 40]);
81
- *
82
- * // Unshift adds to the beginning
83
- * list.unshift(10);
84
- * console.log([...list]); // [10, 20, 30, 40];
85
- *
86
- * // Access elements (forward traversal only for singly linked)
87
- * const second = list.at(1);
88
- * console.log(second); // 20;
89
- *
90
- * // SinglyLinkedList allows forward iteration only
91
- * const elements: number[] = [];
92
- * for (const item of list) {
93
- * elements.push(item);
94
- * }
95
- * console.log(elements); // [10, 20, 30, 40];
96
- *
97
- * console.log(list.length); // 4;
98
- * @example
99
- * // SinglyLinkedList filter and map operations
100
- * const list = new SinglyLinkedList<number>([1, 2, 3, 4, 5]);
101
- *
102
- * // Filter even numbers
103
- * const filtered = list.filter(value => value % 2 === 0);
104
- * console.log(filtered.length); // 2;
105
- *
106
- * // Map to double values
107
- * const doubled = list.map(value => value * 2);
108
- * console.log(doubled.length); // 5;
109
- *
110
- * // Use reduce to sum
111
- * const sum = list.reduce((acc, value) => acc + value, 0);
112
- * console.log(sum); // 15;
113
- * @example
114
49
  * // SinglyLinkedList for sequentially processed data stream
115
50
  * interface LogEntry {
116
51
  * timestamp: number;
@@ -227,6 +162,17 @@ export declare class SinglyLinkedListNode<E = any> extends LinkedListNode<E> {
227
162
  * editor.moveCursor(1);
228
163
  * editor.insert('a');
229
164
  * console.log(editor.getText()); // 'Haello';
165
+ * @example
166
+ * // Find first matching element
167
+ * const list = new SinglyLinkedList<number>([1, 2, 3, 4, 5]);
168
+ * console.log(list.find(n => n > 3)); // 4;
169
+ * console.log(list.find(n => n > 10)); // undefined;
170
+ * @example
171
+ * // Iterate over elements
172
+ * const list = new SinglyLinkedList<number>([10, 20, 30]);
173
+ * const result: number[] = [];
174
+ * list.forEach(n => result.push(n));
175
+ * console.log(result); // [10, 20, 30];
230
176
  */
231
177
  export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase<E, R, SinglyLinkedListNode<E>> {
232
178
  protected _equals: (a: E, b: E) => boolean;
@@ -288,18 +234,146 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
288
234
  * @remarks Time O(1), Space O(1)
289
235
  * @param elementOrNode - Element or node to append.
290
236
  * @returns True when appended.
237
+
238
+
239
+
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
+ * @example
269
+ * // basic SinglyLinkedList creation and push operation
270
+ * // Create a simple SinglyLinkedList with initial values
271
+ * const list = new SinglyLinkedList([1, 2, 3, 4, 5]);
272
+ *
273
+ * // Verify the list maintains insertion order
274
+ * console.log([...list]); // [1, 2, 3, 4, 5];
275
+ *
276
+ * // Check length
277
+ * console.log(list.length); // 5;
278
+ *
279
+ * // Push a new element to the end
280
+ * list.push(6);
281
+ * console.log(list.length); // 6;
282
+ * console.log([...list]); // [1, 2, 3, 4, 5, 6];
291
283
  */
292
284
  push(elementOrNode: E | SinglyLinkedListNode<E>): boolean;
293
285
  /**
294
286
  * Remove and return the tail element.
295
287
  * @remarks Time O(N), Space O(1)
296
288
  * @returns Removed element or undefined.
289
+
290
+
291
+
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
+ * @example
321
+ * // SinglyLinkedList pop and shift operations
322
+ * const list = new SinglyLinkedList<number>([10, 20, 30, 40, 50]);
323
+ *
324
+ * // Pop removes from the end
325
+ * const last = list.pop();
326
+ * console.log(last); // 50;
327
+ *
328
+ * // Shift removes from the beginning
329
+ * const first = list.shift();
330
+ * console.log(first); // 10;
331
+ *
332
+ * // Verify remaining elements
333
+ * console.log([...list]); // [20, 30, 40];
334
+ * console.log(list.length); // 3;
297
335
  */
298
336
  pop(): E | undefined;
299
337
  /**
300
338
  * Remove and return the head element.
301
339
  * @remarks Time O(1), Space O(1)
302
340
  * @returns Removed element or undefined.
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
+
367
+
368
+
369
+
370
+
371
+
372
+ * @example
373
+ * // Remove from the front
374
+ * const list = new SinglyLinkedList<number>([10, 20, 30]);
375
+ * console.log(list.shift()); // 10;
376
+ * console.log(list.length); // 2;
303
377
  */
304
378
  shift(): E | undefined;
305
379
  /**
@@ -307,6 +381,57 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
307
381
  * @remarks Time O(1), Space O(1)
308
382
  * @param elementOrNode - Element or node to prepend.
309
383
  * @returns True when prepended.
384
+
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+
394
+
395
+
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+ * @example
416
+ * // SinglyLinkedList unshift and forward traversal
417
+ * const list = new SinglyLinkedList<number>([20, 30, 40]);
418
+ *
419
+ * // Unshift adds to the beginning
420
+ * list.unshift(10);
421
+ * console.log([...list]); // [10, 20, 30, 40];
422
+ *
423
+ * // Access elements (forward traversal only for singly linked)
424
+ * const second = list.at(1);
425
+ * console.log(second); // 20;
426
+ *
427
+ * // SinglyLinkedList allows forward iteration only
428
+ * const elements: number[] = [];
429
+ * for (const item of list) {
430
+ * elements.push(item);
431
+ * }
432
+ * console.log(elements); // [10, 20, 30, 40];
433
+ *
434
+ * console.log(list.length); // 4;
310
435
  */
311
436
  unshift(elementOrNode: E | SinglyLinkedListNode<E>): boolean;
312
437
  /**
@@ -335,6 +460,43 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
335
460
  * @remarks Time O(N), Space O(1)
336
461
  * @param index - Zero-based index.
337
462
  * @returns Element or undefined.
463
+
464
+
465
+
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+
478
+
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
+
490
+
491
+
492
+
493
+
494
+ * @example
495
+ * // Access element by index
496
+ * const list = new SinglyLinkedList<string>(['a', 'b', 'c', 'd']);
497
+ * console.log(list.at(0)); // 'a';
498
+ * console.log(list.at(2)); // 'c';
499
+ * console.log(list.at(3)); // 'd';
338
500
  */
339
501
  at(index: number): E | undefined;
340
502
  /**
@@ -349,6 +511,38 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
349
511
  * @remarks Time O(N), Space O(1)
350
512
  * @param index - Zero-based index.
351
513
  * @returns Node or undefined.
514
+
515
+
516
+
517
+
518
+
519
+
520
+
521
+
522
+
523
+
524
+
525
+
526
+
527
+
528
+
529
+
530
+
531
+
532
+
533
+
534
+
535
+
536
+
537
+
538
+
539
+
540
+
541
+
542
+ * @example
543
+ * // Get node at index
544
+ * const list = new SinglyLinkedList<string>(['a', 'b', 'c']);
545
+ * console.log(list.getNodeAt(1)?.value); // 'b';
352
546
  */
353
547
  getNodeAt(index: number): SinglyLinkedListNode<E> | undefined;
354
548
  /**
@@ -356,6 +550,39 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
356
550
  * @remarks Time O(N), Space O(1)
357
551
  * @param index - Zero-based index.
358
552
  * @returns Removed element or undefined.
553
+
554
+
555
+
556
+
557
+
558
+
559
+
560
+
561
+
562
+
563
+
564
+
565
+
566
+
567
+
568
+
569
+
570
+
571
+
572
+
573
+
574
+
575
+
576
+
577
+
578
+
579
+
580
+
581
+ * @example
582
+ * // Remove by index
583
+ * const list = new SinglyLinkedList<string>(['a', 'b', 'c']);
584
+ * list.deleteAt(1);
585
+ * console.log(list.toArray()); // ['a', 'c'];
359
586
  */
360
587
  deleteAt(index: number): E | undefined;
361
588
  /**
@@ -363,6 +590,39 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
363
590
  * @remarks Time O(N), Space O(1)
364
591
  * @param [elementOrNode] - Element or node to remove; if omitted/undefined, nothing happens.
365
592
  * @returns True if removed.
593
+
594
+
595
+
596
+
597
+
598
+
599
+
600
+
601
+
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+
621
+ * @example
622
+ * // Remove first occurrence
623
+ * const list = new SinglyLinkedList<number>([1, 2, 3, 2]);
624
+ * list.delete(2);
625
+ * console.log(list.toArray()); // [1, 3, 2];
366
626
  */
367
627
  delete(elementOrNode: E | SinglyLinkedListNode<E> | undefined): boolean;
368
628
  /**
@@ -371,6 +631,39 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
371
631
  * @param index - Zero-based index.
372
632
  * @param newElementOrNode - Element or node to insert.
373
633
  * @returns True if inserted.
634
+
635
+
636
+
637
+
638
+
639
+
640
+
641
+
642
+
643
+
644
+
645
+
646
+
647
+
648
+
649
+
650
+
651
+
652
+
653
+
654
+
655
+
656
+
657
+
658
+
659
+
660
+
661
+
662
+ * @example
663
+ * // Insert at index
664
+ * const list = new SinglyLinkedList<number>([1, 3]);
665
+ * list.addAt(1, 2);
666
+ * console.log(list.toArray()); // [1, 2, 3];
374
667
  */
375
668
  addAt(index: number, newElementOrNode: E | SinglyLinkedListNode<E>): boolean;
376
669
  /**
@@ -385,18 +678,120 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
385
678
  * Check whether the list is empty.
386
679
  * @remarks Time O(1), Space O(1)
387
680
  * @returns True if length is 0.
681
+
682
+
683
+
684
+
685
+
686
+
687
+
688
+
689
+
690
+
691
+
692
+
693
+
694
+
695
+
696
+
697
+
698
+
699
+
700
+
701
+
702
+
703
+
704
+
705
+
706
+
707
+
708
+
709
+
710
+ * @example
711
+ * // Check empty
712
+ * console.log(new SinglyLinkedList().isEmpty()); // true;
388
713
  */
389
714
  isEmpty(): boolean;
390
715
  /**
391
716
  * Remove all nodes and reset length.
392
717
  * @remarks Time O(N), Space O(1)
393
718
  * @returns void
719
+
720
+
721
+
722
+
723
+
724
+
725
+
726
+
727
+
728
+
729
+
730
+
731
+
732
+
733
+
734
+
735
+
736
+
737
+
738
+
739
+
740
+
741
+
742
+
743
+
744
+
745
+
746
+
747
+
748
+ * @example
749
+ * // Remove all
750
+ * const list = new SinglyLinkedList<number>([1, 2, 3]);
751
+ * list.clear();
752
+ * console.log(list.isEmpty()); // true;
394
753
  */
395
754
  clear(): void;
396
755
  /**
397
756
  * Reverse the list in place.
398
757
  * @remarks Time O(N), Space O(1)
399
758
  * @returns This list.
759
+
760
+
761
+
762
+
763
+
764
+
765
+
766
+
767
+
768
+
769
+
770
+
771
+
772
+
773
+
774
+
775
+
776
+
777
+
778
+
779
+
780
+
781
+
782
+
783
+
784
+
785
+
786
+
787
+
788
+
789
+
790
+ * @example
791
+ * // Reverse the list in-place
792
+ * const list = new SinglyLinkedList<number>([1, 2, 3, 4]);
793
+ * list.reverse();
794
+ * console.log([...list]); // [4, 3, 2, 1];
400
795
  */
401
796
  reverse(): this;
402
797
  /**
@@ -456,6 +851,42 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
456
851
  * Deep clone this list (values are copied by reference).
457
852
  * @remarks Time O(N), Space O(N)
458
853
  * @returns A new list with the same element sequence.
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+
863
+
864
+
865
+
866
+
867
+
868
+
869
+
870
+
871
+
872
+
873
+
874
+
875
+
876
+
877
+
878
+
879
+
880
+
881
+
882
+
883
+ * @example
884
+ * // Deep copy
885
+ * const list = new SinglyLinkedList<number>([1, 2, 3]);
886
+ * const copy = list.clone();
887
+ * copy.pop();
888
+ * console.log(list.length); // 3;
889
+ * console.log(copy.length); // 2;
459
890
  */
460
891
  clone(): this;
461
892
  /**
@@ -464,8 +895,54 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
464
895
  * @param callback - Predicate (value, index, list) → boolean to keep value.
465
896
  * @param [thisArg] - Value for `this` inside the callback.
466
897
  * @returns A new list with kept values.
898
+
899
+
900
+
901
+
902
+
903
+
904
+
905
+
906
+
907
+
908
+
909
+
910
+
911
+
912
+
913
+
914
+
915
+
916
+
917
+
918
+
919
+
920
+
921
+
922
+
923
+
924
+
925
+
926
+
927
+
928
+
929
+ * @example
930
+ * // SinglyLinkedList filter and map operations
931
+ * const list = new SinglyLinkedList<number>([1, 2, 3, 4, 5]);
932
+ *
933
+ * // Filter even numbers
934
+ * const filtered = list.filter(value => value % 2 === 0);
935
+ * console.log(filtered.length); // 2;
936
+ *
937
+ * // Map to double values
938
+ * const doubled = list.map(value => value * 2);
939
+ * console.log(doubled.length); // 5;
940
+ *
941
+ * // Use reduce to sum
942
+ * const sum = list.reduce((acc, value) => acc + value, 0);
943
+ * console.log(sum); // 15;
467
944
  */
468
- filter(callback: ElementCallback<E, R, boolean>, thisArg?: any): this;
945
+ filter(callback: ElementCallback<E, R, boolean>, thisArg?: unknown): this;
469
946
  /**
470
947
  * Map values into a new list of the same class.
471
948
  * @remarks Time O(N), Space O(N)
@@ -473,7 +950,7 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
473
950
  * @param [thisArg] - Value for `this` inside the callback.
474
951
  * @returns A new list with mapped values.
475
952
  */
476
- mapSame(callback: ElementCallback<E, R, E>, thisArg?: any): this;
953
+ mapSame(callback: ElementCallback<E, R, E>, thisArg?: unknown): this;
477
954
  /**
478
955
  * Map values into a new list (possibly different element type).
479
956
  * @remarks Time O(N), Space O(N)
@@ -483,8 +960,44 @@ export declare class SinglyLinkedList<E = any, R = any> extends LinearLinkedBase
483
960
  * @param [options] - Options for the output list (e.g., maxLen, toElementFn).
484
961
  * @param [thisArg] - Value for `this` inside the callback.
485
962
  * @returns A new SinglyLinkedList with mapped values.
963
+
964
+
965
+
966
+
967
+
968
+
969
+
970
+
971
+
972
+
973
+
974
+
975
+
976
+
977
+
978
+
979
+
980
+
981
+
982
+
983
+
984
+
985
+
986
+
987
+
988
+
989
+
990
+
991
+
992
+
993
+
994
+ * @example
995
+ * // Transform elements
996
+ * const list = new SinglyLinkedList<number>([1, 2, 3]);
997
+ * const doubled = list.map(n => n * 2);
998
+ * console.log([...doubled]); // [2, 4, 6];
486
999
  */
487
- map<EM, RM = any>(callback: ElementCallback<E, R, EM>, options?: SinglyLinkedListOptions<EM, RM>, thisArg?: any): SinglyLinkedList<EM, RM>;
1000
+ map<EM, RM = any>(callback: ElementCallback<E, R, EM>, options?: SinglyLinkedListOptions<EM, RM>, thisArg?: unknown): SinglyLinkedList<EM, RM>;
488
1001
  /**
489
1002
  * (Protected) Create a node from a value.
490
1003
  * @remarks Time O(1), Space O(1)