priority-queue-typed 2.4.5 → 2.5.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 (76) hide show
  1. package/README.md +66 -0
  2. package/dist/cjs/index.cjs +400 -119
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs-legacy/index.cjs +399 -118
  5. package/dist/cjs-legacy/index.cjs.map +1 -1
  6. package/dist/esm/index.mjs +400 -119
  7. package/dist/esm/index.mjs.map +1 -1
  8. package/dist/esm-legacy/index.mjs +399 -118
  9. package/dist/esm-legacy/index.mjs.map +1 -1
  10. package/dist/types/data-structures/base/iterable-element-base.d.ts +1 -1
  11. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +128 -51
  12. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +210 -164
  13. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +429 -78
  14. package/dist/types/data-structures/binary-tree/bst.d.ts +311 -28
  15. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +212 -32
  16. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +218 -152
  17. package/dist/types/data-structures/binary-tree/tree-map.d.ts +1281 -5
  18. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1087 -201
  19. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +858 -65
  20. package/dist/types/data-structures/binary-tree/tree-set.d.ts +1133 -5
  21. package/dist/types/data-structures/graph/directed-graph.d.ts +219 -47
  22. package/dist/types/data-structures/graph/map-graph.d.ts +59 -1
  23. package/dist/types/data-structures/graph/undirected-graph.d.ts +204 -59
  24. package/dist/types/data-structures/hash/hash-map.d.ts +230 -77
  25. package/dist/types/data-structures/heap/heap.d.ts +287 -99
  26. package/dist/types/data-structures/heap/max-heap.d.ts +46 -0
  27. package/dist/types/data-structures/heap/min-heap.d.ts +59 -0
  28. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +286 -44
  29. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +278 -65
  30. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +415 -12
  31. package/dist/types/data-structures/matrix/matrix.d.ts +331 -0
  32. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +57 -0
  33. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +60 -0
  34. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +60 -0
  35. package/dist/types/data-structures/queue/deque.d.ts +272 -65
  36. package/dist/types/data-structures/queue/queue.d.ts +211 -42
  37. package/dist/types/data-structures/stack/stack.d.ts +174 -32
  38. package/dist/types/data-structures/trie/trie.d.ts +213 -43
  39. package/dist/types/types/data-structures/binary-tree/segment-tree.d.ts +1 -1
  40. package/dist/types/types/data-structures/linked-list/skip-linked-list.d.ts +1 -4
  41. package/dist/umd/priority-queue-typed.js +397 -116
  42. package/dist/umd/priority-queue-typed.js.map +1 -1
  43. package/dist/umd/priority-queue-typed.min.js +1 -1
  44. package/dist/umd/priority-queue-typed.min.js.map +1 -1
  45. package/package.json +2 -2
  46. package/src/data-structures/base/iterable-element-base.ts +4 -5
  47. package/src/data-structures/binary-tree/avl-tree.ts +134 -51
  48. package/src/data-structures/binary-tree/binary-indexed-tree.ts +302 -247
  49. package/src/data-structures/binary-tree/binary-tree.ts +429 -79
  50. package/src/data-structures/binary-tree/bst.ts +335 -34
  51. package/src/data-structures/binary-tree/red-black-tree.ts +290 -97
  52. package/src/data-structures/binary-tree/segment-tree.ts +372 -248
  53. package/src/data-structures/binary-tree/tree-map.ts +1284 -6
  54. package/src/data-structures/binary-tree/tree-multi-map.ts +1094 -211
  55. package/src/data-structures/binary-tree/tree-multi-set.ts +858 -65
  56. package/src/data-structures/binary-tree/tree-set.ts +1136 -9
  57. package/src/data-structures/graph/directed-graph.ts +219 -47
  58. package/src/data-structures/graph/map-graph.ts +59 -1
  59. package/src/data-structures/graph/undirected-graph.ts +204 -59
  60. package/src/data-structures/hash/hash-map.ts +230 -77
  61. package/src/data-structures/heap/heap.ts +287 -99
  62. package/src/data-structures/heap/max-heap.ts +46 -0
  63. package/src/data-structures/heap/min-heap.ts +59 -0
  64. package/src/data-structures/linked-list/doubly-linked-list.ts +286 -44
  65. package/src/data-structures/linked-list/singly-linked-list.ts +278 -65
  66. package/src/data-structures/linked-list/skip-linked-list.ts +689 -90
  67. package/src/data-structures/matrix/matrix.ts +416 -12
  68. package/src/data-structures/priority-queue/max-priority-queue.ts +57 -0
  69. package/src/data-structures/priority-queue/min-priority-queue.ts +60 -0
  70. package/src/data-structures/priority-queue/priority-queue.ts +60 -0
  71. package/src/data-structures/queue/deque.ts +272 -65
  72. package/src/data-structures/queue/queue.ts +211 -42
  73. package/src/data-structures/stack/stack.ts +174 -32
  74. package/src/data-structures/trie/trie.ts +213 -43
  75. package/src/types/data-structures/binary-tree/segment-tree.ts +1 -1
  76. package/src/types/data-structures/linked-list/skip-linked-list.ts +2 -1
package/README.md CHANGED
@@ -102,6 +102,72 @@ yarn add priority-queue-typed
102
102
 
103
103
  [//]: # (No deletion!!! Start of Example Replace Section)
104
104
 
105
+ ### Hospital emergency room triage
106
+ ```typescript
107
+ interface Patient {
108
+ name: string;
109
+ severity: number; // 1 = critical, 5 = minor
110
+ }
111
+
112
+ const er = new PriorityQueue<Patient>([], {
113
+ comparator: (a, b) => a.severity - b.severity
114
+ });
115
+
116
+ er.add({ name: 'Flu symptoms', severity: 4 });
117
+ er.add({ name: 'Heart attack', severity: 1 });
118
+ er.add({ name: 'Broken arm', severity: 3 });
119
+ er.add({ name: 'Stroke', severity: 1 });
120
+
121
+ // Most critical patients first
122
+ console.log(er.poll()?.severity); // 1;
123
+ console.log(er.poll()?.severity); // 1;
124
+ console.log(er.poll()?.severity); // 3;
125
+ console.log(er.poll()?.severity); // 4;
126
+ ```
127
+
128
+ ### Task scheduler with deadlines
129
+ ```typescript
130
+ interface Task {
131
+ name: string;
132
+ deadline: number; // hours until due
133
+ }
134
+
135
+ const scheduler = new PriorityQueue<Task>([], {
136
+ comparator: (a, b) => a.deadline - b.deadline
137
+ });
138
+
139
+ scheduler.add({ name: 'Report', deadline: 24 });
140
+ scheduler.add({ name: 'Email', deadline: 2 });
141
+ scheduler.add({ name: 'Meeting prep', deadline: 4 });
142
+ scheduler.add({ name: 'Code review', deadline: 8 });
143
+
144
+ // Process most urgent first
145
+ console.log(scheduler.peek()?.name); // 'Email';
146
+ console.log(scheduler.size); // 4;
147
+
148
+ const order = [];
149
+ while (scheduler.size > 0) {
150
+ order.push(scheduler.poll()!.name);
151
+ }
152
+ console.log(order); // ['Email', 'Meeting prep', 'Code review', 'Report'];
153
+ ```
154
+
155
+ ### Bandwidth allocation with priorities
156
+ ```typescript
157
+ const bandwidth = new PriorityQueue<[number, string]>([], {
158
+ comparator: (a, b) => a[0] - b[0]
159
+ });
160
+
161
+ bandwidth.add([1, 'Video call']); // highest priority
162
+ bandwidth.add([3, 'File download']);
163
+ bandwidth.add([2, 'Web browsing']);
164
+ bandwidth.add([1, 'Voice call']);
165
+
166
+ // Allocate bandwidth to highest priority first
167
+ console.log(bandwidth.poll()?.[1]); // 'Video call';
168
+ console.log(bandwidth.poll()?.[1]); // 'Voice call';
169
+ console.log(bandwidth.size); // 2;
170
+ ```
105
171
 
106
172
  [//]: # (No deletion!!! End of Example Replace Section)
107
173