typescript-ds-lib 0.3.1 → 0.3.6
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.
- package/README.md +10 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/base-collection.d.ts +14 -0
- package/dist/lib/base-collection.js +7 -0
- package/dist/lib/base-collection.js.map +1 -0
- package/dist/lib/binary-search-tree.d.ts +14 -3
- package/dist/lib/binary-search-tree.js +11 -2
- package/dist/lib/binary-search-tree.js.map +1 -1
- package/dist/lib/deque.d.ts +14 -4
- package/dist/lib/deque.js +3 -1
- package/dist/lib/deque.js.map +1 -1
- package/dist/lib/hash-table.d.ts +6 -4
- package/dist/lib/hash-table.js +21 -10
- package/dist/lib/hash-table.js.map +1 -1
- package/dist/lib/hash-utils.d.ts +7 -0
- package/dist/lib/{hash-table-utils.js → hash-utils.js} +37 -30
- package/dist/lib/hash-utils.js.map +1 -0
- package/dist/lib/heap.d.ts +32 -0
- package/dist/lib/heap.js +101 -0
- package/dist/lib/heap.js.map +1 -0
- package/dist/lib/linked-list.d.ts +14 -4
- package/dist/lib/linked-list.js +5 -3
- package/dist/lib/linked-list.js.map +1 -1
- package/dist/lib/map.d.ts +5 -4
- package/dist/lib/map.js +3 -1
- package/dist/lib/map.js.map +1 -1
- package/dist/lib/matrix.d.ts +14 -4
- package/dist/lib/matrix.js +3 -1
- package/dist/lib/matrix.js.map +1 -1
- package/dist/lib/priority-queue.d.ts +15 -4
- package/dist/lib/priority-queue.js +14 -20
- package/dist/lib/priority-queue.js.map +1 -1
- package/dist/lib/queue.d.ts +14 -4
- package/dist/lib/queue.js +3 -1
- package/dist/lib/queue.js.map +1 -1
- package/dist/lib/red-black-tree.d.ts +5 -4
- package/dist/lib/red-black-tree.js +5 -3
- package/dist/lib/red-black-tree.js.map +1 -1
- package/dist/lib/set.d.ts +19 -7
- package/dist/lib/set.js +92 -23
- package/dist/lib/set.js.map +1 -1
- package/dist/lib/stack.d.ts +14 -4
- package/dist/lib/stack.js +12 -9
- package/dist/lib/stack.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/hash-table-utils.d.ts +0 -7
- package/dist/lib/hash-table-utils.js.map +0 -1
package/dist/lib/set.js
CHANGED
|
@@ -1,22 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Set = void 0;
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
const base_collection_1 = require("./base-collection");
|
|
5
|
+
const hash_utils_1 = require("./hash-utils");
|
|
6
|
+
class Node {
|
|
7
|
+
value;
|
|
8
|
+
next;
|
|
9
|
+
constructor(value) {
|
|
10
|
+
this.value = value;
|
|
11
|
+
this.next = null;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
class Set extends base_collection_1.BaseCollection {
|
|
15
|
+
table;
|
|
16
|
+
count;
|
|
17
|
+
capacity;
|
|
18
|
+
constructor(capacity = 81920) {
|
|
19
|
+
super();
|
|
20
|
+
this.capacity = capacity <= 0 ? 81920 : capacity;
|
|
21
|
+
this.table = new Array(this.capacity).fill(null);
|
|
22
|
+
this.count = 0;
|
|
9
23
|
}
|
|
10
24
|
/**
|
|
11
|
-
* Adds a value to the set if it's not already present
|
|
25
|
+
* Adds a value to the set if it's not already present.
|
|
26
|
+
*
|
|
27
|
+
* TODO: Dinamically resize the table if the collision factor is too high.
|
|
12
28
|
*/
|
|
13
29
|
insert(value) {
|
|
14
|
-
|
|
15
|
-
|
|
30
|
+
const index = hash_utils_1.HashUtils.hash(value, this.capacity);
|
|
31
|
+
// Handle empty bucket case.
|
|
32
|
+
if (!this.table[index]) {
|
|
33
|
+
this.table[index] = new Node(value);
|
|
34
|
+
this.count++;
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// Check first node for value match. If it matches, do nothing.
|
|
38
|
+
if (hash_utils_1.HashUtils.equals(this.table[index].value, value))
|
|
39
|
+
return;
|
|
40
|
+
// Traverse chain to find value or last node. If it matches, do nothing.
|
|
41
|
+
let current = this.table[index];
|
|
42
|
+
while (current?.next) {
|
|
43
|
+
if (hash_utils_1.HashUtils.equals(current.next.value, value))
|
|
44
|
+
return;
|
|
45
|
+
current = current.next;
|
|
16
46
|
}
|
|
47
|
+
// Value not found, append new node.
|
|
48
|
+
current.next = new Node(value);
|
|
49
|
+
this.count++;
|
|
17
50
|
}
|
|
18
51
|
/**
|
|
19
|
-
* Adds multiple values to the set if they're not already present
|
|
52
|
+
* Adds multiple values to the set if they're not already present.
|
|
20
53
|
*/
|
|
21
54
|
insertList(values) {
|
|
22
55
|
for (const value of values) {
|
|
@@ -24,40 +57,76 @@ class Set {
|
|
|
24
57
|
}
|
|
25
58
|
}
|
|
26
59
|
/**
|
|
27
|
-
* Checks if a value exists in the set
|
|
60
|
+
* Checks if a value exists in the set.
|
|
28
61
|
*/
|
|
29
62
|
find(value) {
|
|
30
|
-
|
|
63
|
+
const index = hash_utils_1.HashUtils.hash(value, this.capacity);
|
|
64
|
+
let current = this.table[index];
|
|
65
|
+
while (current) {
|
|
66
|
+
if (hash_utils_1.HashUtils.equals(current.value, value))
|
|
67
|
+
return true;
|
|
68
|
+
current = current.next;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
has(value) {
|
|
73
|
+
return this.find(value);
|
|
31
74
|
}
|
|
32
75
|
/**
|
|
33
|
-
* Removes a value from the set
|
|
76
|
+
* Removes a value from the set.
|
|
34
77
|
*/
|
|
35
78
|
remove(value) {
|
|
36
|
-
|
|
79
|
+
const index = hash_utils_1.HashUtils.hash(value, this.capacity);
|
|
80
|
+
// Handle empty bucket case
|
|
81
|
+
if (!this.table[index])
|
|
82
|
+
return false;
|
|
83
|
+
// Handle first node case
|
|
84
|
+
if (hash_utils_1.HashUtils.equals(this.table[index].value, value)) {
|
|
85
|
+
this.table[index] = this.table[index].next;
|
|
86
|
+
this.count--;
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
// Handle remaining nodes
|
|
90
|
+
let current = this.table[index].next;
|
|
91
|
+
let prev = this.table[index];
|
|
92
|
+
while (current) {
|
|
93
|
+
if (hash_utils_1.HashUtils.equals(current.value, value)) {
|
|
94
|
+
prev.next = current.next;
|
|
95
|
+
this.count--;
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
prev = current;
|
|
99
|
+
current = current.next;
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
37
102
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Executes a callback function for each element in the set
|
|
40
|
-
*/
|
|
41
103
|
forEach(callback) {
|
|
42
|
-
this.
|
|
104
|
+
for (const node of this.table) {
|
|
105
|
+
let current = node;
|
|
106
|
+
while (current) {
|
|
107
|
+
callback(current.value);
|
|
108
|
+
current = current.next;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
43
111
|
}
|
|
44
112
|
/**
|
|
45
|
-
* Removes all elements from the set
|
|
113
|
+
* Removes all elements from the set.
|
|
46
114
|
*/
|
|
47
115
|
clear() {
|
|
48
|
-
this.
|
|
116
|
+
this.table = new Array(this.capacity).fill(null);
|
|
117
|
+
this.count = 0;
|
|
49
118
|
}
|
|
50
119
|
/**
|
|
51
|
-
* Returns true if the set contains no elements
|
|
120
|
+
* Returns true if the set contains no elements.
|
|
52
121
|
*/
|
|
53
122
|
isEmpty() {
|
|
54
|
-
return this.
|
|
123
|
+
return this.count === 0;
|
|
55
124
|
}
|
|
56
125
|
/**
|
|
57
|
-
* Returns the number of elements in the set
|
|
126
|
+
* Returns the number of elements in the set.
|
|
58
127
|
*/
|
|
59
128
|
size() {
|
|
60
|
-
return this.
|
|
129
|
+
return this.count;
|
|
61
130
|
}
|
|
62
131
|
}
|
|
63
132
|
exports.Set = Set;
|
package/dist/lib/set.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../lib/set.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../lib/set.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/stack.d.ts
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
|
+
import { BaseCollection } from "./base-collection";
|
|
1
2
|
export interface Stack<T> {
|
|
2
3
|
push(element: T): void;
|
|
3
4
|
pop(): T | undefined;
|
|
4
5
|
top(): T | undefined;
|
|
6
|
+
}
|
|
7
|
+
export declare class Stack<T> extends BaseCollection<T> implements Stack<T> {
|
|
8
|
+
private llData;
|
|
9
|
+
constructor();
|
|
10
|
+
/**
|
|
11
|
+
* Checks if the stack is empty. Returns true if the stack is empty, false otherwise.
|
|
12
|
+
*/
|
|
5
13
|
isEmpty(): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Returns the number of elements in the stack. The size of the stack
|
|
16
|
+
*/
|
|
6
17
|
size(): number;
|
|
18
|
+
/**
|
|
19
|
+
* Removes all elements from the stack.
|
|
20
|
+
*/
|
|
7
21
|
clear(): void;
|
|
8
22
|
}
|
|
9
|
-
export declare class Stack<T> implements Stack<T> {
|
|
10
|
-
private items;
|
|
11
|
-
constructor();
|
|
12
|
-
}
|
package/dist/lib/stack.js
CHANGED
|
@@ -1,46 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Stack = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const base_collection_1 = require("./base-collection");
|
|
5
|
+
const linked_list_1 = require("./linked-list");
|
|
6
|
+
class Stack extends base_collection_1.BaseCollection {
|
|
7
|
+
llData;
|
|
6
8
|
constructor() {
|
|
7
|
-
|
|
9
|
+
super();
|
|
10
|
+
this.llData = new linked_list_1.LinkedList();
|
|
8
11
|
}
|
|
9
12
|
/**
|
|
10
13
|
* Adds an element to the top of the stack.
|
|
11
14
|
*/
|
|
12
15
|
push(element) {
|
|
13
|
-
this.
|
|
16
|
+
this.llData.pushFront(element);
|
|
14
17
|
}
|
|
15
18
|
/**
|
|
16
19
|
* Removes and returns the top element from the stack, or undefined if stack is empty.
|
|
17
20
|
*/
|
|
18
21
|
pop() {
|
|
19
|
-
return this.
|
|
22
|
+
return this.llData.popFront();
|
|
20
23
|
}
|
|
21
24
|
/**
|
|
22
25
|
* Returns the top element of the stack without removing it, or undefined if stack is empty.
|
|
23
26
|
*/
|
|
24
27
|
top() {
|
|
25
|
-
return this.
|
|
28
|
+
return this.llData.front();
|
|
26
29
|
}
|
|
27
30
|
/**
|
|
28
31
|
* Checks if the stack is empty. Returns true if the stack is empty, false otherwise.
|
|
29
32
|
*/
|
|
30
33
|
isEmpty() {
|
|
31
|
-
return this.
|
|
34
|
+
return this.llData.isEmpty();
|
|
32
35
|
}
|
|
33
36
|
/**
|
|
34
37
|
* Returns the number of elements in the stack. The size of the stack
|
|
35
38
|
*/
|
|
36
39
|
size() {
|
|
37
|
-
return this.
|
|
40
|
+
return this.llData.size();
|
|
38
41
|
}
|
|
39
42
|
/**
|
|
40
43
|
* Removes all elements from the stack.
|
|
41
44
|
*/
|
|
42
45
|
clear() {
|
|
43
|
-
this.
|
|
46
|
+
this.llData.clear();
|
|
44
47
|
}
|
|
45
48
|
}
|
|
46
49
|
exports.Stack = Stack;
|
package/dist/lib/stack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../../lib/stack.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../../lib/stack.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,+CAA2C;AAU3C,MAAa,KAAS,SAAQ,gCAAiB;IACrC,MAAM,CAAgB;IAE9B;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,wBAAU,EAAK,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAU;QACb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF;AAjDD,sBAiDC"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hash-table-utils.js","sourceRoot":"","sources":["../../lib/hash-table-utils.ts"],"names":[],"mappings":"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"}
|