data-structure-typed 1.46.2 → 1.46.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.
@@ -7,7 +7,7 @@
7
7
  * @license MIT License
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.ObjectDeque = exports.Deque = exports.DequeIterator = void 0;
10
+ exports.ObjectDeque = exports.Deque = void 0;
11
11
  const utils_1 = require("../../utils");
12
12
  /**
13
13
  * Deque can provide random access with O(1) time complexity
@@ -15,78 +15,6 @@ const utils_1 = require("../../utils");
15
15
  * Deque may experience performance jitter, but DoublyLinkedList will not
16
16
  * Deque is implemented using a dynamic array. Inserting or deleting beyond both ends of the array may require moving elements or reallocating space.
17
17
  */
18
- class DequeIterator {
19
- /**
20
- * The constructor initializes the index, iterate direction, and prev/next functions for a
21
- * DequeIterator object.
22
- * @param {number} index - The index parameter represents the current index position of the iterator
23
- * within the deque. It is a number that indicates the position of the element that the iterator is
24
- * currently pointing to.
25
- * @param deque - The `deque` parameter is an instance of the `Deque` class. It represents a
26
- * double-ended queue data structure, which allows elements to be added or removed from both ends.
27
- * @param iterateDirection - The `iterateDirection` parameter is an optional parameter that specifies
28
- * the direction in which the iterator should iterate over the elements of the `deque`. It has a
29
- * default value of `IterateDirection.DEFAULT`.
30
- * @returns The constructor is not returning anything. It is used to initialize the properties of the
31
- * object being created.
32
- */
33
- constructor(index, deque, iterateDirection = 0 /* IterateDirection.DEFAULT */) {
34
- this.index = index;
35
- this.iterateDirection = iterateDirection;
36
- if (this.iterateDirection === 0 /* IterateDirection.DEFAULT */) {
37
- this.prev = function () {
38
- if (this.index === 0) {
39
- (0, utils_1.throwRangeError)();
40
- }
41
- this.index -= 1;
42
- return this;
43
- };
44
- this.next = function () {
45
- if (this.index === this.deque.size) {
46
- (0, utils_1.throwRangeError)();
47
- }
48
- this.index += 1;
49
- return this;
50
- };
51
- }
52
- else {
53
- this.prev = function () {
54
- if (this.index === this.deque.size - 1) {
55
- (0, utils_1.throwRangeError)();
56
- }
57
- this.index += 1;
58
- return this;
59
- };
60
- this.next = function () {
61
- if (this.index === -1) {
62
- (0, utils_1.throwRangeError)();
63
- }
64
- this.index -= 1;
65
- return this;
66
- };
67
- }
68
- this.deque = deque;
69
- }
70
- get current() {
71
- return this.deque.getAt(this.index);
72
- }
73
- set current(newElement) {
74
- this.deque.setAt(this.index, newElement);
75
- }
76
- isAccessible() {
77
- return this.index !== this.deque.size;
78
- }
79
- prev() {
80
- return this;
81
- }
82
- next() {
83
- return this;
84
- }
85
- clone() {
86
- return new DequeIterator(this.index, this.deque, this.iterateDirection);
87
- }
88
- }
89
- exports.DequeIterator = DequeIterator;
90
18
  class Deque {
91
19
  /**
92
20
  * The constructor initializes a data structure with a specified bucket size and populates it with
@@ -220,35 +148,25 @@ class Deque {
220
148
  this._firstInBucket = this._lastInBucket = this._bucketSize >> 1;
221
149
  }
222
150
  /**
223
- * The `begin()` function returns a new iterator for a deque starting from the first element.
224
- * @returns A new instance of the DequeIterator class is being returned.
225
- */
226
- begin() {
227
- return new DequeIterator(0, this);
228
- }
229
- /**
230
- * The `end()` function returns a new `DequeIterator` object with the size and reference to the
231
- * current deque.
232
- * @returns A new instance of the DequeIterator class is being returned.
151
+ * The below function is a generator that yields elements from a collection one by one.
233
152
  */
234
- end() {
235
- return new DequeIterator(this.size, this);
236
- }
237
- /**
238
- * The reverseBegin function returns a new DequeIterator object that starts at the last element of
239
- * the deque and iterates in reverse direction.
240
- * @returns A new instance of the DequeIterator class is being returned.
241
- */
242
- reverseBegin() {
243
- return new DequeIterator(this.size - 1, this, 1 /* IterateDirection.REVERSE */);
153
+ *begin() {
154
+ let index = 0;
155
+ while (index < this.size) {
156
+ yield this.getAt(index);
157
+ index++;
158
+ }
244
159
  }
245
160
  /**
246
- * The reverseEnd() function returns a new DequeIterator object that iterates over the elements of a
247
- * Deque in reverse order.
248
- * @returns A new instance of the DequeIterator class is being returned.
161
+ * The function `reverseBegin()` is a generator that yields elements in reverse order starting from
162
+ * the last element.
249
163
  */
250
- reverseEnd() {
251
- return new DequeIterator(-1, this, 1 /* IterateDirection.REVERSE */);
164
+ *reverseBegin() {
165
+ let index = this.size - 1;
166
+ while (index >= 0) {
167
+ yield this.getAt(index);
168
+ index--;
169
+ }
252
170
  }
253
171
  /**
254
172
  * Time Complexity - Amortized O(1) (possible reallocation)
@@ -399,7 +317,7 @@ class Deque {
399
317
  * @returns The element at the specified position in the data structure is being returned.
400
318
  */
401
319
  getAt(pos) {
402
- utils_1.rangeCheck(pos, 0, this.size - 1);
320
+ (0, utils_1.rangeCheck)(pos, 0, this.size - 1);
403
321
  const { bucketIndex, indexInBucket } = this._getBucketAndPosition(pos);
404
322
  return this._buckets[bucketIndex][indexInBucket];
405
323
  }
@@ -418,7 +336,7 @@ class Deque {
418
336
  * position in the data structure.
419
337
  */
420
338
  setAt(pos, element) {
421
- utils_1.rangeCheck(pos, 0, this.size - 1);
339
+ (0, utils_1.rangeCheck)(pos, 0, this.size - 1);
422
340
  const { bucketIndex, indexInBucket } = this._getBucketAndPosition(pos);
423
341
  this._buckets[bucketIndex][indexInBucket] = element;
424
342
  }
@@ -443,7 +361,7 @@ class Deque {
443
361
  */
444
362
  insertAt(pos, element, num = 1) {
445
363
  const length = this.size;
446
- utils_1.rangeCheck(pos, 0, length);
364
+ (0, utils_1.rangeCheck)(pos, 0, length);
447
365
  if (pos === 0) {
448
366
  while (num--)
449
367
  this.unshift(element);
@@ -506,7 +424,7 @@ class Deque {
506
424
  * @returns The size of the data structure after the deletion operation is performed.
507
425
  */
508
426
  deleteAt(pos) {
509
- utils_1.rangeCheck(pos, 0, this.size - 1);
427
+ (0, utils_1.rangeCheck)(pos, 0, this.size - 1);
510
428
  if (pos === 0)
511
429
  this.shift();
512
430
  else if (pos === this.size - 1)
@@ -555,46 +473,6 @@ class Deque {
555
473
  this.cut(index - 1);
556
474
  return this.size;
557
475
  }
558
- /**
559
- * Time Complexity: O(n)
560
- * Space Complexity: O(1)
561
- */
562
- /**
563
- * Time Complexity: O(n)
564
- * Space Complexity: O(1)
565
- *
566
- * The function deletes an element from a deque using an iterator and returns the next iterator.
567
- * @param iter - The parameter `iter` is of type `DequeIterator<E>`. It represents an iterator object
568
- * that is used to iterate over elements in a deque (double-ended queue).
569
- * @returns the updated iterator after deleting an element from the deque.
570
- */
571
- deleteByIterator(iter) {
572
- const index = iter.index;
573
- this.deleteAt(index);
574
- iter = iter.next();
575
- return iter;
576
- }
577
- /**
578
- * Time Complexity: O(n)
579
- * Space Complexity: O(1)
580
- */
581
- /**
582
- * Time Complexity: O(n)
583
- * Space Complexity: O(1)
584
- *
585
- * The function `findIterator` searches for an element in a deque and returns an iterator pointing to
586
- * the element if found, otherwise it returns an iterator pointing to the end of the deque.
587
- * @param {E} element - The `element` parameter is the element that you want to find in the deque.
588
- * @returns The method `findIterator(element: E)` returns a `DequeIterator<E>` object.
589
- */
590
- findIterator(element) {
591
- for (let i = 0; i < this.size; ++i) {
592
- if (this.getAt(i) === element) {
593
- return new DequeIterator(i, this);
594
- }
595
- }
596
- return this.end();
597
- }
598
476
  /**
599
477
  * Time Complexity: O(n)
600
478
  * Space Complexity: O(1)
@@ -1 +1 @@
1
- {"version":3,"file":"deque.js","sourceRoot":"","sources":["../../../../src/data-structures/queue/deque.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deque.js","sourceRoot":"","sources":["../../../../src/data-structures/queue/deque.ts"],"names":[],"mappings":"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"}
@@ -5,48 +5,7 @@
5
5
  * @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
6
6
  * @license MIT License
7
7
  */
8
- import { HashMapLinkedNode, IterableWithSizeOrLength, IterateDirection } from '../../types';
9
- /**
10
- * Because the implementation of HashMap relies on JavaScript's built-in objects and arrays,
11
- * these underlying structures have already dealt with dynamic expansion and hash collisions.
12
- * Therefore, there is no need for additional logic to handle these issues.
13
- */
14
- export declare class HashMapIterator<K, V> {
15
- readonly hashMap: HashMap<K, V>;
16
- readonly iterateDirection: IterateDirection;
17
- protected _node: HashMapLinkedNode<K, V>;
18
- protected readonly _sentinel: HashMapLinkedNode<K, V>;
19
- /**
20
- * This is a constructor function for a linked list iterator in a HashMap data structure.
21
- * @param node - The `node` parameter is a reference to a `HashMapLinkedNode` object. This object
22
- * represents a node in a linked list used in a hash map data structure. It contains a key-value pair
23
- * and references to the previous and next nodes in the linked list.
24
- * @param sentinel - The `sentinel` parameter is a reference to a special node in a linked list. It
25
- * is used to mark the beginning or end of the list and is typically used in data structures like
26
- * hash maps or linked lists to simplify operations and boundary checks.
27
- * @param hashMap - A HashMap object that stores key-value pairs.
28
- * @param {IterateDirection} iterateDirection - The `iterateDirection` parameter is an optional
29
- * parameter that specifies the direction in which the iterator should iterate over the elements of
30
- * the HashMap. It can take one of the following values:
31
- * @returns The constructor does not return anything. It is used to initialize the properties and
32
- * methods of the object being created.
33
- */
34
- constructor(node: HashMapLinkedNode<K, V>, sentinel: HashMapLinkedNode<K, V>, hashMap: HashMap<K, V>, iterateDirection?: IterateDirection);
35
- /**
36
- * The above function returns a Proxy object that allows access to the key and value of a node in a
37
- * data structure.
38
- * @returns The code is returning a Proxy object.
39
- */
40
- get current(): [K, V];
41
- /**
42
- * The function checks if a node is accessible.
43
- * @returns a boolean value indicating whether the `_node` is not equal to the `_sentinel`.
44
- */
45
- isAccessible(): boolean;
46
- prev(): this;
47
- next(): this;
48
- clone(): HashMapIterator<K, V>;
49
- }
8
+ import { HashMapLinkedNode, IterableWithSizeOrLength } from '../../types';
50
9
  export declare class HashMap<K = any, V = any> {
51
10
  readonly OBJ_KEY_INDEX: symbol;
52
11
  protected _nodes: HashMapLinkedNode<K, V>[];
@@ -63,41 +22,6 @@ export declare class HashMap<K = any, V = any> {
63
22
  constructor(elements?: IterableWithSizeOrLength<[K, V]>);
64
23
  protected _size: number;
65
24
  get size(): number;
66
- /**
67
- * Time Complexity: O(1)
68
- * Space Complexity: O(1)
69
- *
70
- * The function returns a new iterator object for a HashMap.
71
- * @returns A new instance of the HashMapIterator class is being returned.
72
- */
73
- get begin(): HashMapIterator<K, V>;
74
- /**
75
- * Time Complexity: O(1)
76
- * Space Complexity: O(1)
77
- *
78
- * The function returns a new HashMapIterator object with the _sentinel value as both the start and
79
- * end values.
80
- * @returns A new instance of the HashMapIterator class is being returned.
81
- */
82
- get end(): HashMapIterator<K, V>;
83
- /**
84
- * Time Complexity: O(1)
85
- * Space Complexity: O(1)
86
- *
87
- * The reverseBegin function returns a new HashMapIterator object that iterates over the elements of
88
- * a HashMap in reverse order.
89
- * @returns A new instance of the HashMapIterator class is being returned.
90
- */
91
- get reverseBegin(): HashMapIterator<K, V>;
92
- /**
93
- * Time Complexity: O(1)
94
- * Space Complexity: O(1)
95
- *
96
- * The reverseEnd function returns a new HashMapIterator object that iterates over the elements of a
97
- * HashMap in reverse order.
98
- * @returns A new instance of the HashMapIterator class is being returned.
99
- */
100
- get reverseEnd(): HashMapIterator<K, V>;
101
25
  /**
102
26
  * Time Complexity: O(1)
103
27
  * Space Complexity: O(1)
@@ -116,6 +40,15 @@ export declare class HashMap<K = any, V = any> {
116
40
  * data structure.
117
41
  */
118
42
  get last(): [K, V] | undefined;
43
+ /**
44
+ * The `begin()` function in TypeScript iterates over a linked list and yields key-value pairs.
45
+ */
46
+ begin(): Generator<(K | V)[], void, unknown>;
47
+ /**
48
+ * The function `reverseBegin()` iterates over a linked list in reverse order, yielding each node's
49
+ * key and value.
50
+ */
51
+ reverseBegin(): Generator<(K | V)[], void, unknown>;
119
52
  /**
120
53
  * Time Complexity: O(1)
121
54
  * Space Complexity: O(1)
@@ -159,20 +92,6 @@ export declare class HashMap<K = any, V = any> {
159
92
  * where `K` is the key and `V` is the value.
160
93
  */
161
94
  getAt(index: number): [K, V];
162
- /**
163
- * Time Complexity: O(1)
164
- * Space Complexity: O(1)
165
- *
166
- * The function `getIterator` returns a new instance of `HashMapIterator` based on the provided key
167
- * and whether it is an object key or not.
168
- * @param {K} key - The `key` parameter is the key used to retrieve the iterator from the HashMap. It
169
- * can be of any type, depending on how the HashMap is implemented.
170
- * @param {boolean} [isObjectKey] - The `isObjectKey` parameter is an optional boolean parameter that
171
- * indicates whether the `key` parameter is an object key. If `isObjectKey` is `true`, it means that
172
- * the `key` parameter is an object and needs to be handled differently. If `isObjectKey` is `false`
173
- * @returns a new instance of the `HashMapIterator` class.
174
- */
175
- getIterator(key: K, isObjectKey?: boolean): HashMapIterator<K, V>;
176
95
  /**
177
96
  * Time Complexity: O(1)
178
97
  * Space Complexity: O(1)
@@ -5,115 +5,7 @@
5
5
  * @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
6
6
  * @license MIT License
7
7
  */
8
- import { isObjOrFunc, rangeCheck, throwRangeError } from '../../utils';
9
- /**
10
- * Because the implementation of HashMap relies on JavaScript's built-in objects and arrays,
11
- * these underlying structures have already dealt with dynamic expansion and hash collisions.
12
- * Therefore, there is no need for additional logic to handle these issues.
13
- */
14
- export class HashMapIterator {
15
- hashMap;
16
- iterateDirection;
17
- _node;
18
- _sentinel;
19
- /**
20
- * This is a constructor function for a linked list iterator in a HashMap data structure.
21
- * @param node - The `node` parameter is a reference to a `HashMapLinkedNode` object. This object
22
- * represents a node in a linked list used in a hash map data structure. It contains a key-value pair
23
- * and references to the previous and next nodes in the linked list.
24
- * @param sentinel - The `sentinel` parameter is a reference to a special node in a linked list. It
25
- * is used to mark the beginning or end of the list and is typically used in data structures like
26
- * hash maps or linked lists to simplify operations and boundary checks.
27
- * @param hashMap - A HashMap object that stores key-value pairs.
28
- * @param {IterateDirection} iterateDirection - The `iterateDirection` parameter is an optional
29
- * parameter that specifies the direction in which the iterator should iterate over the elements of
30
- * the HashMap. It can take one of the following values:
31
- * @returns The constructor does not return anything. It is used to initialize the properties and
32
- * methods of the object being created.
33
- */
34
- constructor(node, sentinel, hashMap, iterateDirection = 0 /* IterateDirection.DEFAULT */) {
35
- this._node = node;
36
- this._sentinel = sentinel;
37
- this.iterateDirection = iterateDirection;
38
- if (this.iterateDirection === 0 /* IterateDirection.DEFAULT */) {
39
- this.prev = function () {
40
- if (this._node.prev === this._sentinel) {
41
- throwRangeError();
42
- }
43
- this._node = this._node.prev;
44
- return this;
45
- };
46
- this.next = function () {
47
- if (this._node === this._sentinel) {
48
- throwRangeError();
49
- }
50
- this._node = this._node.next;
51
- return this;
52
- };
53
- }
54
- else {
55
- this.prev = function () {
56
- if (this._node.next === this._sentinel) {
57
- throwRangeError();
58
- }
59
- this._node = this._node.next;
60
- return this;
61
- };
62
- this.next = function () {
63
- if (this._node === this._sentinel) {
64
- throwRangeError();
65
- }
66
- this._node = this._node.prev;
67
- return this;
68
- };
69
- }
70
- this.hashMap = hashMap;
71
- }
72
- /**
73
- * The above function returns a Proxy object that allows access to the key and value of a node in a
74
- * data structure.
75
- * @returns The code is returning a Proxy object.
76
- */
77
- get current() {
78
- if (this._node === this._sentinel) {
79
- throwRangeError();
80
- }
81
- return new Proxy([], {
82
- get: (target, prop) => {
83
- if (prop === '0')
84
- return this._node.key;
85
- else if (prop === '1')
86
- return this._node.value;
87
- target[0] = this._node.key;
88
- target[1] = this._node.value;
89
- return target[prop];
90
- },
91
- set: (_, prop, newValue) => {
92
- if (prop !== '1') {
93
- throw new TypeError(`prop should be string '1'`);
94
- }
95
- this._node.value = newValue;
96
- return true;
97
- }
98
- });
99
- }
100
- /**
101
- * The function checks if a node is accessible.
102
- * @returns a boolean value indicating whether the `_node` is not equal to the `_sentinel`.
103
- */
104
- isAccessible() {
105
- return this._node !== this._sentinel;
106
- }
107
- prev() {
108
- return this;
109
- }
110
- next() {
111
- return this;
112
- }
113
- clone() {
114
- return new HashMapIterator(this._node, this._sentinel, this.hashMap, this.iterateDirection);
115
- }
116
- }
8
+ import { isObjOrFunc, rangeCheck } from '../../utils';
117
9
  export class HashMap {
118
10
  OBJ_KEY_INDEX = Symbol('OBJ_KEY_INDEX');
119
11
  _nodes = [];
@@ -139,49 +31,6 @@ export class HashMap {
139
31
  get size() {
140
32
  return this._size;
141
33
  }
142
- /**
143
- * Time Complexity: O(1)
144
- * Space Complexity: O(1)
145
- *
146
- * The function returns a new iterator object for a HashMap.
147
- * @returns A new instance of the HashMapIterator class is being returned.
148
- */
149
- get begin() {
150
- return new HashMapIterator(this._head, this._sentinel, this);
151
- }
152
- /**
153
- * Time Complexity: O(1)
154
- * Space Complexity: O(1)
155
- *
156
- * The function returns a new HashMapIterator object with the _sentinel value as both the start and
157
- * end values.
158
- * @returns A new instance of the HashMapIterator class is being returned.
159
- */
160
- get end() {
161
- return new HashMapIterator(this._sentinel, this._sentinel, this);
162
- }
163
- /**
164
- * Time Complexity: O(1)
165
- * Space Complexity: O(1)
166
- *
167
- * The reverseBegin function returns a new HashMapIterator object that iterates over the elements of
168
- * a HashMap in reverse order.
169
- * @returns A new instance of the HashMapIterator class is being returned.
170
- */
171
- get reverseBegin() {
172
- return new HashMapIterator(this._tail, this._sentinel, this, 1 /* IterateDirection.REVERSE */);
173
- }
174
- /**
175
- * Time Complexity: O(1)
176
- * Space Complexity: O(1)
177
- *
178
- * The reverseEnd function returns a new HashMapIterator object that iterates over the elements of a
179
- * HashMap in reverse order.
180
- * @returns A new instance of the HashMapIterator class is being returned.
181
- */
182
- get reverseEnd() {
183
- return new HashMapIterator(this._sentinel, this._sentinel, this, 1 /* IterateDirection.REVERSE */);
184
- }
185
34
  /**
186
35
  * Time Complexity: O(1)
187
36
  * Space Complexity: O(1)
@@ -208,6 +57,27 @@ export class HashMap {
208
57
  return;
209
58
  return [this._tail.key, this._tail.value];
210
59
  }
60
+ /**
61
+ * The `begin()` function in TypeScript iterates over a linked list and yields key-value pairs.
62
+ */
63
+ *begin() {
64
+ let node = this._head;
65
+ while (node !== this._sentinel) {
66
+ yield [node.key, node.value];
67
+ node = node.next;
68
+ }
69
+ }
70
+ /**
71
+ * The function `reverseBegin()` iterates over a linked list in reverse order, yielding each node's
72
+ * key and value.
73
+ */
74
+ *reverseBegin() {
75
+ let node = this._tail;
76
+ while (node !== this._sentinel) {
77
+ yield [node.key, node.value];
78
+ node = node.prev;
79
+ }
80
+ }
211
81
  /**
212
82
  * Time Complexity: O(1)
213
83
  * Space Complexity: O(1)
@@ -308,35 +178,6 @@ export class HashMap {
308
178
  }
309
179
  return [node.key, node.value];
310
180
  }
311
- /**
312
- * Time Complexity: O(1)
313
- * Space Complexity: O(1)
314
- *
315
- * The function `getIterator` returns a new instance of `HashMapIterator` based on the provided key
316
- * and whether it is an object key or not.
317
- * @param {K} key - The `key` parameter is the key used to retrieve the iterator from the HashMap. It
318
- * can be of any type, depending on how the HashMap is implemented.
319
- * @param {boolean} [isObjectKey] - The `isObjectKey` parameter is an optional boolean parameter that
320
- * indicates whether the `key` parameter is an object key. If `isObjectKey` is `true`, it means that
321
- * the `key` parameter is an object and needs to be handled differently. If `isObjectKey` is `false`
322
- * @returns a new instance of the `HashMapIterator` class.
323
- */
324
- getIterator(key, isObjectKey) {
325
- let node;
326
- if (isObjectKey) {
327
- const index = key[this.OBJ_KEY_INDEX];
328
- if (index === undefined) {
329
- node = this._sentinel;
330
- }
331
- else {
332
- node = this._nodes[index];
333
- }
334
- }
335
- else {
336
- node = this._orgMap[key] || this._sentinel;
337
- }
338
- return new HashMapIterator(node, this._sentinel, this);
339
- }
340
181
  /**
341
182
  * Time Complexity: O(1)
342
183
  * Space Complexity: O(1)