data-structure-typed 2.5.1 → 2.5.3

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 (184) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/MIGRATION.md +169 -0
  3. package/README.md +135 -23
  4. package/README_CN.md +551 -143
  5. package/SPECIFICATION.md +20 -14
  6. package/SPECIFICATION.zh-CN.md +20 -14
  7. package/dist/cjs/binary-tree.cjs +6460 -1591
  8. package/dist/cjs/graph.cjs +440 -20
  9. package/dist/cjs/hash.cjs +125 -22
  10. package/dist/cjs/heap.cjs +196 -47
  11. package/dist/cjs/index.cjs +8486 -2429
  12. package/dist/cjs/linked-list.cjs +456 -31
  13. package/dist/cjs/matrix.cjs +79 -9
  14. package/dist/cjs/priority-queue.cjs +193 -44
  15. package/dist/cjs/queue.cjs +391 -2
  16. package/dist/cjs/stack.cjs +92 -6
  17. package/dist/cjs/trie.cjs +122 -28
  18. package/dist/cjs-legacy/binary-tree.cjs +6484 -1612
  19. package/dist/cjs-legacy/graph.cjs +440 -20
  20. package/dist/cjs-legacy/hash.cjs +125 -22
  21. package/dist/cjs-legacy/heap.cjs +196 -47
  22. package/dist/cjs-legacy/index.cjs +8654 -2594
  23. package/dist/cjs-legacy/linked-list.cjs +456 -31
  24. package/dist/cjs-legacy/matrix.cjs +79 -9
  25. package/dist/cjs-legacy/priority-queue.cjs +193 -44
  26. package/dist/cjs-legacy/queue.cjs +391 -2
  27. package/dist/cjs-legacy/stack.cjs +92 -6
  28. package/dist/cjs-legacy/trie.cjs +122 -28
  29. package/dist/esm/binary-tree.mjs +6460 -1591
  30. package/dist/esm/graph.mjs +440 -20
  31. package/dist/esm/hash.mjs +125 -22
  32. package/dist/esm/heap.mjs +196 -47
  33. package/dist/esm/index.mjs +8486 -2430
  34. package/dist/esm/linked-list.mjs +456 -31
  35. package/dist/esm/matrix.mjs +79 -9
  36. package/dist/esm/priority-queue.mjs +193 -44
  37. package/dist/esm/queue.mjs +391 -2
  38. package/dist/esm/stack.mjs +92 -6
  39. package/dist/esm/trie.mjs +122 -28
  40. package/dist/esm-legacy/binary-tree.mjs +6484 -1612
  41. package/dist/esm-legacy/graph.mjs +440 -20
  42. package/dist/esm-legacy/hash.mjs +125 -22
  43. package/dist/esm-legacy/heap.mjs +196 -47
  44. package/dist/esm-legacy/index.mjs +8654 -2595
  45. package/dist/esm-legacy/linked-list.mjs +456 -31
  46. package/dist/esm-legacy/matrix.mjs +79 -9
  47. package/dist/esm-legacy/priority-queue.mjs +193 -44
  48. package/dist/esm-legacy/queue.mjs +391 -2
  49. package/dist/esm-legacy/stack.mjs +92 -6
  50. package/dist/esm-legacy/trie.mjs +122 -28
  51. package/dist/types/common/error.d.ts +9 -0
  52. package/dist/types/common/index.d.ts +1 -1
  53. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +98 -2
  54. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +112 -0
  55. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +214 -13
  56. package/dist/types/data-structures/binary-tree/bst.d.ts +294 -3
  57. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +155 -8
  58. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +48 -0
  59. package/dist/types/data-structures/binary-tree/tree-map.d.ts +1370 -323
  60. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1329 -316
  61. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +1116 -295
  62. package/dist/types/data-structures/binary-tree/tree-set.d.ts +1330 -326
  63. package/dist/types/data-structures/graph/directed-graph.d.ts +80 -0
  64. package/dist/types/data-structures/graph/undirected-graph.d.ts +72 -0
  65. package/dist/types/data-structures/hash/hash-map.d.ts +95 -6
  66. package/dist/types/data-structures/heap/heap.d.ts +154 -12
  67. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +143 -0
  68. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -1
  69. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +144 -0
  70. package/dist/types/data-structures/matrix/matrix.d.ts +64 -0
  71. package/dist/types/data-structures/queue/deque.d.ts +142 -0
  72. package/dist/types/data-structures/queue/queue.d.ts +109 -0
  73. package/dist/types/data-structures/stack/stack.d.ts +82 -2
  74. package/dist/types/data-structures/trie/trie.d.ts +96 -0
  75. package/dist/types/interfaces/binary-tree.d.ts +2 -3
  76. package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
  77. package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
  78. package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
  79. package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
  80. package/dist/umd/data-structure-typed.js +8623 -2564
  81. package/dist/umd/data-structure-typed.min.js +5 -5
  82. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +696 -194
  83. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +11 -11
  84. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +71 -71
  85. package/docs-site-docusaurus/docs/api/classes/BST.md +639 -189
  86. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +13 -13
  87. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +15 -15
  88. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +148 -160
  89. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
  90. package/docs-site-docusaurus/docs/api/classes/Deque.md +105 -91
  91. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +82 -82
  92. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +104 -74
  93. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +8 -8
  94. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +12 -12
  95. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
  96. package/docs-site-docusaurus/docs/api/classes/HashMap.md +51 -51
  97. package/docs-site-docusaurus/docs/api/classes/Heap.md +96 -85
  98. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +25 -25
  99. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +33 -33
  100. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +50 -50
  101. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +55 -55
  102. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +55 -55
  103. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +6 -6
  104. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +78 -78
  105. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +82 -82
  106. package/docs-site-docusaurus/docs/api/classes/Matrix.md +31 -31
  107. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +104 -89
  108. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +104 -89
  109. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +104 -89
  110. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +104 -89
  111. package/docs-site-docusaurus/docs/api/classes/Navigator.md +5 -5
  112. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +103 -88
  113. package/docs-site-docusaurus/docs/api/classes/Queue.md +112 -60
  114. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +708 -206
  115. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -10
  116. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +79 -79
  117. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +6 -6
  118. package/docs-site-docusaurus/docs/api/classes/SkipList.md +44 -44
  119. package/docs-site-docusaurus/docs/api/classes/Stack.md +42 -42
  120. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +236 -33
  121. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +162 -46
  122. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +232 -32
  123. package/docs-site-docusaurus/docs/api/classes/Trie.md +47 -47
  124. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
  125. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +81 -81
  126. package/docs-site-docusaurus/docs/guide/architecture.md +75 -5
  127. package/docs-site-docusaurus/docs/guide/concepts.md +53 -3
  128. package/docs-site-docusaurus/docs/guide/faq.md +233 -0
  129. package/docs-site-docusaurus/docs/guide/guides.md +43 -58
  130. package/docs-site-docusaurus/docs/guide/installation.md +2 -0
  131. package/docs-site-docusaurus/docs/guide/integrations.md +75 -176
  132. package/docs-site-docusaurus/docs/guide/overview.md +132 -11
  133. package/docs-site-docusaurus/docs/guide/performance.md +2 -0
  134. package/docs-site-docusaurus/docs/guide/quick-start.md +31 -0
  135. package/docs-site-docusaurus/docs/guide/use-cases/_category_.json +6 -0
  136. package/docs-site-docusaurus/docs/guide/use-cases/array-sort-alternative.md +158 -0
  137. package/docs-site-docusaurus/docs/guide/use-cases/heap-vs-sorting.md +92 -0
  138. package/docs-site-docusaurus/docs/guide/use-cases/map-vs-treemap.md +151 -0
  139. package/docs-site-docusaurus/docs/guide/use-cases/priority-queue-typescript.md +113 -0
  140. package/docs-site-docusaurus/docs/guide/use-cases/treemap-javascript.md +151 -0
  141. package/docs-site-docusaurus/docusaurus.config.ts +1 -1
  142. package/docs-site-docusaurus/src/pages/index.tsx +55 -2
  143. package/docs-site-docusaurus/static/llms.txt +37 -0
  144. package/docs-site-docusaurus/typedoc.json +1 -0
  145. package/llms.txt +37 -0
  146. package/package.json +65 -56
  147. package/src/common/error.ts +19 -1
  148. package/src/common/index.ts +1 -1
  149. package/src/data-structures/base/iterable-element-base.ts +3 -2
  150. package/src/data-structures/binary-tree/avl-tree.ts +99 -5
  151. package/src/data-structures/binary-tree/binary-indexed-tree.ts +102 -4
  152. package/src/data-structures/binary-tree/binary-tree.ts +239 -78
  153. package/src/data-structures/binary-tree/bst.ts +542 -13
  154. package/src/data-structures/binary-tree/red-black-tree.ts +155 -15
  155. package/src/data-structures/binary-tree/segment-tree.ts +42 -0
  156. package/src/data-structures/binary-tree/tree-map.ts +1223 -261
  157. package/src/data-structures/binary-tree/tree-multi-map.ts +939 -30
  158. package/src/data-structures/binary-tree/tree-multi-set.ts +746 -10
  159. package/src/data-structures/binary-tree/tree-set.ts +1018 -99
  160. package/src/data-structures/graph/abstract-graph.ts +2 -2
  161. package/src/data-structures/graph/directed-graph.ts +71 -1
  162. package/src/data-structures/graph/undirected-graph.ts +64 -1
  163. package/src/data-structures/hash/hash-map.ts +102 -16
  164. package/src/data-structures/heap/heap.ts +153 -23
  165. package/src/data-structures/heap/max-heap.ts +2 -2
  166. package/src/data-structures/linked-list/doubly-linked-list.ts +139 -0
  167. package/src/data-structures/linked-list/singly-linked-list.ts +106 -1
  168. package/src/data-structures/linked-list/skip-linked-list.ts +131 -5
  169. package/src/data-structures/matrix/matrix.ts +65 -9
  170. package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
  171. package/src/data-structures/queue/deque.ts +130 -0
  172. package/src/data-structures/queue/queue.ts +109 -0
  173. package/src/data-structures/stack/stack.ts +75 -5
  174. package/src/data-structures/trie/trie.ts +86 -2
  175. package/src/interfaces/binary-tree.ts +1 -9
  176. package/src/types/data-structures/binary-tree/bst.ts +1 -0
  177. package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
  178. package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
  179. package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
  180. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +0 -12984
  181. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +0 -3
  182. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +0 -4505
  183. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +0 -9731
  184. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +0 -347
package/SPECIFICATION.md CHANGED
@@ -101,21 +101,25 @@
101
101
 
102
102
  ```typescript
103
103
  // Add operations
104
- structure.push(element: T): number // Add to end, return length
105
- structure.unshift(element: T): number // Add to start, return length
104
+ structure.push(element: T): boolean // Add to end
105
+ structure.unshift(element: T): boolean // Add to start
106
106
 
107
107
  // Remove operations
108
108
  structure.pop(): T | undefined // Remove from end
109
109
  structure.shift(): T | undefined // Remove from start
110
+ structure.delete(element: T): boolean // Remove first match
111
+ structure.deleteAt(index: number): T | undefined // Remove at index
112
+ structure.deleteWhere(pred: Function): boolean // Remove first match by predicate
110
113
 
111
114
  // Peek operations (read without removing)
112
- structure.peek(): T | undefined // View last element
113
- structure.peekFirst(): T | undefined // View first element (Deque)
114
- structure.peekLast(): T | undefined // View last element (Deque)
115
+ structure.peek(): T | undefined // View front element (Queue/Deque/Stack)
116
+ structure.first: T | undefined // View first element (getter)
117
+ structure.last: T | undefined // View last element (getter)
115
118
 
116
119
  // Size and queries
117
- structure.size: number // Element count
118
- structure.isEmpty: boolean // Check if empty
120
+ structure.size: number // Element count (Stack, Trie, etc.)
121
+ structure.length: number // Element count (Queue, Deque, LinkedList)
122
+ structure.isEmpty(): boolean // Check if empty
119
123
  ```
120
124
 
121
125
  ### Tree & Map API
@@ -124,8 +128,8 @@ structure.isEmpty: boolean // Check if empty
124
128
 
125
129
  ```typescript
126
130
  // Add/update
127
- structure.set(key: K, value: V): this
128
- structure.setMany(entries: [K, V][]): this
131
+ structure.set(key: K, value: V): this // Returns this for chaining (Map/HashMap)
132
+ structure.setMany(entries: [K, V][]): boolean[]
129
133
 
130
134
  // Query
131
135
  structure.get(key: K): V | undefined
@@ -134,6 +138,7 @@ structure.size: number
134
138
 
135
139
  // Remove
136
140
  structure.delete(key: K): boolean
141
+ structure.deleteWhere(pred: Function): boolean // TreeMap/TreeSet/LinkedHashMap
137
142
  structure.clear(): void
138
143
 
139
144
  // Iteration
@@ -148,17 +153,18 @@ structure.entries(): IterableIterator<[K, V]>
148
153
 
149
154
  ```typescript
150
155
  // Add/remove
151
- heap.push(element: T): number // Add element
152
- heap.add(element: T): number // Alias for push
153
- heap.pop(): T | undefined // Remove highest/lowest priority
154
- heap.poll(): T | undefined // Alias for pop
156
+ heap.add(element: T): boolean // Add element
157
+ heap.pop(): T | undefined // Remove highest/lowest priority
158
+ heap.poll(): T | undefined // Deprecated use pop()
159
+ heap.delete(element: T): boolean // Remove first match
160
+ heap.deleteWhere(pred: Function): boolean // Remove first match by predicate
155
161
 
156
162
  // Peek
157
163
  heap.peek(): T | undefined // View highest/lowest without removing
158
164
 
159
165
  // Query
160
166
  heap.size: number
161
- heap.isEmpty: boolean
167
+ heap.isEmpty(): boolean
162
168
  ```
163
169
 
164
170
  ### Array Methods (Available on All Structures)
@@ -101,21 +101,25 @@
101
101
 
102
102
  ```typescript
103
103
  // 添加操作
104
- structure.push(element: T): number // 添加到末尾,返回长度
105
- structure.unshift(element: T): number // 添加到开头,返回长度
104
+ structure.push(element: T): boolean // 添加到末尾
105
+ structure.unshift(element: T): boolean // 添加到开头
106
106
 
107
107
  // 删除操作
108
108
  structure.pop(): T | undefined // 从末尾删除
109
109
  structure.shift(): T | undefined // 从开头删除
110
+ structure.delete(element: T): boolean // 删除第一个匹配
111
+ structure.deleteAt(index: number): T | undefined // 按索引删除
112
+ structure.deleteWhere(pred: Function): boolean // 按条件删除第一个匹配
110
113
 
111
114
  // 查看操作(读取但不删除)
112
- structure.peek(): T | undefined // 查看最后一个元素
113
- structure.peekFirst(): T | undefined // 查看第一个元素(Deque
114
- structure.peekLast(): T | undefined // 查看最后一个元素(Deque
115
+ structure.peek(): T | undefined // 查看队头元素(Queue/Deque/Stack)
116
+ structure.first: T | undefined // 查看第一个元素(getter
117
+ structure.last: T | undefined // 查看最后一个元素(getter
115
118
 
116
119
  // 大小和查询
117
- structure.size: number // 元素数量
118
- structure.isEmpty: boolean // 检查是否为空
120
+ structure.size: number // 元素数量(Stack、Trie 等)
121
+ structure.length: number // 元素数量(Queue、Deque、LinkedList)
122
+ structure.isEmpty(): boolean // 检查是否为空
119
123
  ```
120
124
 
121
125
  ### 树和映射 API
@@ -124,8 +128,8 @@ structure.isEmpty: boolean // 检查是否为空
124
128
 
125
129
  ```typescript
126
130
  // 添加/更新
127
- structure.set(key: K, value: V): this
128
- structure.setMany(entries: [K, V][]): this
131
+ structure.set(key: K, value: V): this // 返回 this 支持链式调用(Map/HashMap)
132
+ structure.setMany(entries: [K, V][]): boolean[]
129
133
 
130
134
  // 查询
131
135
  structure.get(key: K): V | undefined
@@ -134,6 +138,7 @@ structure.size: number
134
138
 
135
139
  // 删除
136
140
  structure.delete(key: K): boolean
141
+ structure.deleteWhere(pred: Function): boolean // TreeMap/TreeSet/LinkedHashMap
137
142
  structure.clear(): void
138
143
 
139
144
  // 迭代
@@ -148,17 +153,18 @@ structure.entries(): IterableIterator<[K, V]>
148
153
 
149
154
  ```typescript
150
155
  // 添加/删除
151
- heap.push(element: T): number // 添加元素
152
- heap.add(element: T): number // push 的别名
153
- heap.pop(): T | undefined // 删除最高/最低优先级
154
- heap.poll(): T | undefined // pop 的别名
156
+ heap.add(element: T): boolean // 添加元素
157
+ heap.pop(): T | undefined // 删除最高/最低优先级
158
+ heap.poll(): T | undefined // 已废弃 — 请使用 pop()
159
+ heap.delete(element: T): boolean // 删除第一个匹配
160
+ heap.deleteWhere(pred: Function): boolean // 按条件删除第一个匹配
155
161
 
156
162
  // 查看
157
163
  heap.peek(): T | undefined // 查看最高/最低优先级但不删除
158
164
 
159
165
  // 查询
160
166
  heap.size: number
161
- heap.isEmpty: boolean
167
+ heap.isEmpty(): boolean
162
168
  ```
163
169
 
164
170
  ### 数组方法(所有结构上可用)