typescript-ds-lib 0.0.1 → 0.1.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.
- package/README.md +32 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/binary-search-tree.d.ts +35 -0
- package/dist/lib/binary-search-tree.js +144 -0
- package/dist/lib/binary-search-tree.js.map +1 -0
- package/dist/lib/deque.d.ts +41 -0
- package/dist/lib/deque.js +65 -0
- package/dist/lib/deque.js.map +1 -0
- package/dist/lib/linked-list.d.ts +43 -0
- package/dist/lib/linked-list.js +172 -0
- package/dist/lib/linked-list.js.map +1 -0
- package/dist/lib/priority-queue.d.ts +32 -0
- package/dist/lib/priority-queue.js +61 -0
- package/dist/lib/priority-queue.js.map +1 -0
- package/dist/lib/queue.d.ts +29 -0
- package/dist/lib/queue.js +47 -0
- package/dist/lib/queue.js.map +1 -0
- package/dist/lib/stack.d.ts +2 -1
- package/dist/lib/stack.js.map +1 -1
- package/dist/tests/binary-search-tree.test.d.ts +1 -0
- package/dist/tests/binary-search-tree.test.js +75 -0
- package/dist/tests/binary-search-tree.test.js.map +1 -0
- package/dist/tests/deque.test.d.ts +1 -0
- package/dist/tests/deque.test.js +78 -0
- package/dist/tests/deque.test.js.map +1 -0
- package/dist/tests/linked-list.test.d.ts +1 -0
- package/dist/tests/linked-list.test.js +101 -0
- package/dist/tests/linked-list.test.js.map +1 -0
- package/dist/tests/priority-queue.test.d.ts +1 -0
- package/dist/tests/priority-queue.test.js +59 -0
- package/dist/tests/priority-queue.test.js.map +1 -0
- package/dist/tests/queue.test.d.ts +1 -0
- package/dist/tests/queue.test.js +48 -0
- package/dist/tests/queue.test.js.map +1 -0
- package/dist/types/index.d.ts +55 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PriorityQueue = void 0;
|
|
4
|
+
class PriorityQueue {
|
|
5
|
+
items;
|
|
6
|
+
constructor() {
|
|
7
|
+
this.items = [];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Adds an element with a priority to the queue.
|
|
11
|
+
* Lower priority numbers have higher precedence.
|
|
12
|
+
*/
|
|
13
|
+
push(element, priority) {
|
|
14
|
+
const item = { element, priority };
|
|
15
|
+
let added = false;
|
|
16
|
+
for (let i = 0; i < this.items.length; i++) {
|
|
17
|
+
if (priority > this.items[i].priority) {
|
|
18
|
+
this.items.splice(i, 0, item);
|
|
19
|
+
added = true;
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (!added)
|
|
24
|
+
this.items.push(item);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Removes and returns the highest priority element from the queue,
|
|
28
|
+
* or undefined if queue is empty.
|
|
29
|
+
*/
|
|
30
|
+
pop() {
|
|
31
|
+
const item = this.items.shift();
|
|
32
|
+
return item?.element;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Returns the highest priority element without removing it,
|
|
36
|
+
* or undefined if queue is empty.
|
|
37
|
+
*/
|
|
38
|
+
front() {
|
|
39
|
+
return this.items[0]?.element;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Checks if the queue is empty. Returns true if empty, false otherwise.
|
|
43
|
+
*/
|
|
44
|
+
empty() {
|
|
45
|
+
return this.items.length === 0;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Returns the number of elements in the queue.
|
|
49
|
+
*/
|
|
50
|
+
size() {
|
|
51
|
+
return this.items.length;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Removes all elements from the queue.
|
|
55
|
+
*/
|
|
56
|
+
clear() {
|
|
57
|
+
this.items = [];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.PriorityQueue = PriorityQueue;
|
|
61
|
+
//# sourceMappingURL=priority-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priority-queue.js","sourceRoot":"","sources":["../../lib/priority-queue.ts"],"names":[],"mappings":";;;AAGA,MAAa,aAAa;IAChB,KAAK,CAAqC;IAElD;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,OAAU,EAAE,QAAgB;QAC/B,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QACnC,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC9B,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,GAAG;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,OAAO,IAAI,EAAE,OAAO,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AA7DD,sCA6DC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { QueueTy } from '../types';
|
|
2
|
+
export declare class Queue<T> implements QueueTy<T> {
|
|
3
|
+
private items;
|
|
4
|
+
constructor();
|
|
5
|
+
/**
|
|
6
|
+
* Adds an element to the back of the queue.
|
|
7
|
+
*/
|
|
8
|
+
push(element: T): void;
|
|
9
|
+
/**
|
|
10
|
+
* Removes and returns the front element from the queue, or undefined if queue is empty.
|
|
11
|
+
*/
|
|
12
|
+
pop(): T | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Returns the front element of the queue without removing it, or undefined if queue is empty.
|
|
15
|
+
*/
|
|
16
|
+
front(): T | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Checks if the queue is empty. Returns true if the queue is empty, false otherwise.
|
|
19
|
+
*/
|
|
20
|
+
empty(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Returns the number of elements in the queue.
|
|
23
|
+
*/
|
|
24
|
+
size(): number;
|
|
25
|
+
/**
|
|
26
|
+
* Removes all elements from the queue.
|
|
27
|
+
*/
|
|
28
|
+
clear(): void;
|
|
29
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Queue = void 0;
|
|
4
|
+
class Queue {
|
|
5
|
+
items;
|
|
6
|
+
constructor() {
|
|
7
|
+
this.items = [];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Adds an element to the back of the queue.
|
|
11
|
+
*/
|
|
12
|
+
push(element) {
|
|
13
|
+
this.items.push(element);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Removes and returns the front element from the queue, or undefined if queue is empty.
|
|
17
|
+
*/
|
|
18
|
+
pop() {
|
|
19
|
+
return this.items.shift();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Returns the front element of the queue without removing it, or undefined if queue is empty.
|
|
23
|
+
*/
|
|
24
|
+
front() {
|
|
25
|
+
return this.items[0];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Checks if the queue is empty. Returns true if the queue is empty, false otherwise.
|
|
29
|
+
*/
|
|
30
|
+
empty() {
|
|
31
|
+
return this.items.length === 0;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns the number of elements in the queue.
|
|
35
|
+
*/
|
|
36
|
+
size() {
|
|
37
|
+
return this.items.length;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Removes all elements from the queue.
|
|
41
|
+
*/
|
|
42
|
+
clear() {
|
|
43
|
+
this.items = [];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.Queue = Queue;
|
|
47
|
+
//# sourceMappingURL=queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../lib/queue.ts"],"names":[],"mappings":";;;AAGA,MAAa,KAAK;IACR,KAAK,CAAM;IAEnB;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAU;QACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AAhDD,sBAgDC"}
|
package/dist/lib/stack.d.ts
CHANGED
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":";;;AAGA,MAAa,KAAK;IACR,KAAK,CAAM;IAEnB;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAU;QACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AAhDD,sBAgDC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const binary_search_tree_1 = require("../lib/binary-search-tree");
|
|
4
|
+
describe('BinarySearchTree', () => {
|
|
5
|
+
let bst;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
bst = new binary_search_tree_1.BinarySearchTree();
|
|
8
|
+
});
|
|
9
|
+
test('should create empty tree', () => {
|
|
10
|
+
expect(bst.empty()).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
test('should insert and search values', () => {
|
|
13
|
+
bst.insert(5);
|
|
14
|
+
bst.insert(3);
|
|
15
|
+
bst.insert(7);
|
|
16
|
+
expect(bst.find(5)).toBe(true);
|
|
17
|
+
expect(bst.find(3)).toBe(true);
|
|
18
|
+
expect(bst.find(7)).toBe(true);
|
|
19
|
+
expect(bst.find(1)).toBe(false);
|
|
20
|
+
});
|
|
21
|
+
test('should find min and max values', () => {
|
|
22
|
+
bst.insert(5);
|
|
23
|
+
bst.insert(3);
|
|
24
|
+
bst.insert(7);
|
|
25
|
+
bst.insert(1);
|
|
26
|
+
bst.insert(9);
|
|
27
|
+
expect(bst.min()).toBe(1);
|
|
28
|
+
expect(bst.max()).toBe(9);
|
|
29
|
+
});
|
|
30
|
+
test('should return undefined min/max for empty tree', () => {
|
|
31
|
+
expect(bst.min()).toBeUndefined();
|
|
32
|
+
expect(bst.max()).toBeUndefined();
|
|
33
|
+
});
|
|
34
|
+
test('should remove leaf nodes', () => {
|
|
35
|
+
bst.insert(5);
|
|
36
|
+
bst.insert(3);
|
|
37
|
+
bst.insert(7);
|
|
38
|
+
bst.remove(3);
|
|
39
|
+
expect(bst.find(3)).toBe(false);
|
|
40
|
+
expect(bst.find(5)).toBe(true);
|
|
41
|
+
expect(bst.find(7)).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
test('should remove nodes with one child', () => {
|
|
44
|
+
bst.insert(5);
|
|
45
|
+
bst.insert(3);
|
|
46
|
+
bst.insert(2);
|
|
47
|
+
bst.remove(3);
|
|
48
|
+
expect(bst.find(3)).toBe(false);
|
|
49
|
+
expect(bst.find(5)).toBe(true);
|
|
50
|
+
expect(bst.find(2)).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
test('should remove nodes with two children', () => {
|
|
53
|
+
bst.insert(5);
|
|
54
|
+
bst.insert(3);
|
|
55
|
+
bst.insert(7);
|
|
56
|
+
bst.insert(6);
|
|
57
|
+
bst.insert(8);
|
|
58
|
+
bst.remove(7);
|
|
59
|
+
expect(bst.find(7)).toBe(false);
|
|
60
|
+
expect(bst.find(5)).toBe(true);
|
|
61
|
+
expect(bst.find(8)).toBe(true);
|
|
62
|
+
expect(bst.find(6)).toBe(true);
|
|
63
|
+
});
|
|
64
|
+
test('should clear all nodes from tree', () => {
|
|
65
|
+
bst.insert(5);
|
|
66
|
+
bst.insert(3);
|
|
67
|
+
bst.insert(7);
|
|
68
|
+
bst.clear();
|
|
69
|
+
expect(bst.empty()).toBe(true);
|
|
70
|
+
expect(bst.find(5)).toBe(false);
|
|
71
|
+
expect(bst.min()).toBeUndefined();
|
|
72
|
+
expect(bst.max()).toBeUndefined();
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=binary-search-tree.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary-search-tree.test.js","sourceRoot":"","sources":["../../tests/binary-search-tree.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const deque_1 = require("../lib/deque");
|
|
4
|
+
describe('Deque', () => {
|
|
5
|
+
let deque;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
deque = new deque_1.Deque();
|
|
8
|
+
});
|
|
9
|
+
test('should create empty deque', () => {
|
|
10
|
+
expect(deque.empty()).toBe(true);
|
|
11
|
+
expect(deque.size()).toBe(0);
|
|
12
|
+
});
|
|
13
|
+
test('should push elements to front', () => {
|
|
14
|
+
deque.pushFront(1);
|
|
15
|
+
deque.pushFront(2);
|
|
16
|
+
expect(deque.size()).toBe(2);
|
|
17
|
+
expect(deque.front()).toBe(2);
|
|
18
|
+
expect(deque.back()).toBe(1);
|
|
19
|
+
});
|
|
20
|
+
test('should push elements to back', () => {
|
|
21
|
+
deque.pushBack(1);
|
|
22
|
+
deque.pushBack(2);
|
|
23
|
+
expect(deque.size()).toBe(2);
|
|
24
|
+
expect(deque.front()).toBe(1);
|
|
25
|
+
expect(deque.back()).toBe(2);
|
|
26
|
+
});
|
|
27
|
+
test('should pop elements from front', () => {
|
|
28
|
+
deque.pushBack(1);
|
|
29
|
+
deque.pushBack(2);
|
|
30
|
+
expect(deque.popFront()).toBe(1);
|
|
31
|
+
expect(deque.size()).toBe(1);
|
|
32
|
+
expect(deque.popFront()).toBe(2);
|
|
33
|
+
expect(deque.empty()).toBe(true);
|
|
34
|
+
});
|
|
35
|
+
test('should pop elements from back', () => {
|
|
36
|
+
deque.pushBack(1);
|
|
37
|
+
deque.pushBack(2);
|
|
38
|
+
expect(deque.popBack()).toBe(2);
|
|
39
|
+
expect(deque.size()).toBe(1);
|
|
40
|
+
expect(deque.popBack()).toBe(1);
|
|
41
|
+
expect(deque.empty()).toBe(true);
|
|
42
|
+
});
|
|
43
|
+
test('should return undefined when popping empty deque', () => {
|
|
44
|
+
expect(deque.popFront()).toBeUndefined();
|
|
45
|
+
expect(deque.popBack()).toBeUndefined();
|
|
46
|
+
});
|
|
47
|
+
test('should return front and back elements without removing them', () => {
|
|
48
|
+
deque.pushBack(1);
|
|
49
|
+
deque.pushBack(2);
|
|
50
|
+
expect(deque.front()).toBe(1);
|
|
51
|
+
expect(deque.back()).toBe(2);
|
|
52
|
+
expect(deque.size()).toBe(2);
|
|
53
|
+
});
|
|
54
|
+
test('should return undefined when checking front/back of empty deque', () => {
|
|
55
|
+
expect(deque.front()).toBeUndefined();
|
|
56
|
+
expect(deque.back()).toBeUndefined();
|
|
57
|
+
});
|
|
58
|
+
test('should clear all elements from deque', () => {
|
|
59
|
+
deque.pushBack(1);
|
|
60
|
+
deque.pushBack(2);
|
|
61
|
+
deque.pushBack(3);
|
|
62
|
+
deque.clear();
|
|
63
|
+
expect(deque.empty()).toBe(true);
|
|
64
|
+
expect(deque.size()).toBe(0);
|
|
65
|
+
});
|
|
66
|
+
test('should correctly report size', () => {
|
|
67
|
+
expect(deque.size()).toBe(0);
|
|
68
|
+
deque.pushBack(1);
|
|
69
|
+
expect(deque.size()).toBe(1);
|
|
70
|
+
deque.pushFront(2);
|
|
71
|
+
expect(deque.size()).toBe(2);
|
|
72
|
+
deque.popBack();
|
|
73
|
+
expect(deque.size()).toBe(1);
|
|
74
|
+
deque.popFront();
|
|
75
|
+
expect(deque.size()).toBe(0);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=deque.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deque.test.js","sourceRoot":"","sources":["../../tests/deque.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const linked_list_1 = require("../lib/linked-list");
|
|
4
|
+
describe('LinkedList', () => {
|
|
5
|
+
let list;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
list = new linked_list_1.LinkedList();
|
|
8
|
+
});
|
|
9
|
+
test('should add elements to the end', () => {
|
|
10
|
+
list.pushBack(1);
|
|
11
|
+
list.pushBack(2);
|
|
12
|
+
list.pushBack(3);
|
|
13
|
+
expect(list.size()).toBe(3);
|
|
14
|
+
expect(list.get(0)).toBe(1);
|
|
15
|
+
expect(list.get(1)).toBe(2);
|
|
16
|
+
expect(list.get(2)).toBe(3);
|
|
17
|
+
});
|
|
18
|
+
test('should add elements to the front', () => {
|
|
19
|
+
list.pushFront(1);
|
|
20
|
+
list.pushFront(2);
|
|
21
|
+
list.pushFront(3);
|
|
22
|
+
expect(list.size()).toBe(3);
|
|
23
|
+
expect(list.get(0)).toBe(3);
|
|
24
|
+
expect(list.get(1)).toBe(2);
|
|
25
|
+
expect(list.get(2)).toBe(1);
|
|
26
|
+
});
|
|
27
|
+
test('should insert at valid positions', () => {
|
|
28
|
+
list.pushBack(1);
|
|
29
|
+
list.pushBack(3);
|
|
30
|
+
expect(list.insert(2, 1)).toBe(true);
|
|
31
|
+
expect(list.get(0)).toBe(1);
|
|
32
|
+
expect(list.get(1)).toBe(2);
|
|
33
|
+
expect(list.get(2)).toBe(3);
|
|
34
|
+
});
|
|
35
|
+
test('should return false for invalid positions', () => {
|
|
36
|
+
expect(list.insert(1, -1)).toBe(false);
|
|
37
|
+
expect(list.insert(1, 1)).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
test('should remove elements that satisfy the condition', () => {
|
|
40
|
+
list.pushBack(1);
|
|
41
|
+
list.pushBack(2);
|
|
42
|
+
list.pushBack(3);
|
|
43
|
+
expect(list.removeIf(x => x === 2)).toBe(true);
|
|
44
|
+
expect(list.size()).toBe(2);
|
|
45
|
+
expect(list.get(0)).toBe(1);
|
|
46
|
+
expect(list.get(1)).toBe(3);
|
|
47
|
+
});
|
|
48
|
+
test('should return false if no element satisfies the condition', () => {
|
|
49
|
+
list.pushBack(1);
|
|
50
|
+
list.pushBack(2);
|
|
51
|
+
expect(list.removeIf(x => x === 3)).toBe(false);
|
|
52
|
+
expect(list.size()).toBe(2);
|
|
53
|
+
});
|
|
54
|
+
test('should remove elements at valid positions', () => {
|
|
55
|
+
list.pushBack(1);
|
|
56
|
+
list.pushBack(2);
|
|
57
|
+
list.pushBack(3);
|
|
58
|
+
expect(list.removeAt(1)).toBe(2);
|
|
59
|
+
expect(list.size()).toBe(2);
|
|
60
|
+
expect(list.get(0)).toBe(1);
|
|
61
|
+
expect(list.get(1)).toBe(3);
|
|
62
|
+
});
|
|
63
|
+
test('should return undefined for invalid positions', () => {
|
|
64
|
+
list.pushBack(1);
|
|
65
|
+
expect(list.removeAt(-1)).toBeUndefined();
|
|
66
|
+
expect(list.removeAt(1)).toBeUndefined();
|
|
67
|
+
});
|
|
68
|
+
test('should return elements at valid positions', () => {
|
|
69
|
+
list.pushBack(1);
|
|
70
|
+
list.pushBack(2);
|
|
71
|
+
expect(list.get(0)).toBe(1);
|
|
72
|
+
expect(list.get(1)).toBe(2);
|
|
73
|
+
});
|
|
74
|
+
test('should return undefined for invalid positions', () => {
|
|
75
|
+
list.pushBack(1);
|
|
76
|
+
expect(list.get(-1)).toBeUndefined();
|
|
77
|
+
expect(list.get(1)).toBeUndefined();
|
|
78
|
+
});
|
|
79
|
+
test('should return true for empty list', () => {
|
|
80
|
+
expect(list.empty()).toBe(true);
|
|
81
|
+
});
|
|
82
|
+
test('should return false for non-empty list', () => {
|
|
83
|
+
list.pushBack(1);
|
|
84
|
+
expect(list.empty()).toBe(false);
|
|
85
|
+
});
|
|
86
|
+
test('should return correct size', () => {
|
|
87
|
+
expect(list.size()).toBe(0);
|
|
88
|
+
list.pushBack(1);
|
|
89
|
+
expect(list.size()).toBe(1);
|
|
90
|
+
list.pushBack(2);
|
|
91
|
+
expect(list.size()).toBe(2);
|
|
92
|
+
});
|
|
93
|
+
test('should remove all elements', () => {
|
|
94
|
+
list.pushBack(1);
|
|
95
|
+
list.pushBack(2);
|
|
96
|
+
list.clear();
|
|
97
|
+
expect(list.empty()).toBe(true);
|
|
98
|
+
expect(list.size()).toBe(0);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=linked-list.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linked-list.test.js","sourceRoot":"","sources":["../../tests/linked-list.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const priority_queue_1 = require("../lib/priority-queue");
|
|
4
|
+
describe('PriorityQueue', () => {
|
|
5
|
+
let pq;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
pq = new priority_queue_1.PriorityQueue();
|
|
8
|
+
});
|
|
9
|
+
test('should create empty priority queue', () => {
|
|
10
|
+
expect(pq.empty()).toBe(true);
|
|
11
|
+
expect(pq.size()).toBe(0);
|
|
12
|
+
});
|
|
13
|
+
test('should push elements with priority', () => {
|
|
14
|
+
pq.push('low', 1);
|
|
15
|
+
pq.push('high', 3);
|
|
16
|
+
pq.push('medium', 2);
|
|
17
|
+
expect(pq.size()).toBe(3);
|
|
18
|
+
expect(pq.front()).toBe('high');
|
|
19
|
+
});
|
|
20
|
+
test('should maintain priority order when pushing', () => {
|
|
21
|
+
pq.push('third', 1);
|
|
22
|
+
pq.push('first', 3);
|
|
23
|
+
pq.push('second', 2);
|
|
24
|
+
expect(pq.pop()).toBe('first');
|
|
25
|
+
expect(pq.pop()).toBe('second');
|
|
26
|
+
expect(pq.pop()).toBe('third');
|
|
27
|
+
});
|
|
28
|
+
test('should pop elements in priority order', () => {
|
|
29
|
+
pq.push('low', 1);
|
|
30
|
+
pq.push('high', 3);
|
|
31
|
+
pq.push('medium', 2);
|
|
32
|
+
expect(pq.pop()).toBe('high');
|
|
33
|
+
expect(pq.size()).toBe(2);
|
|
34
|
+
expect(pq.pop()).toBe('medium');
|
|
35
|
+
expect(pq.pop()).toBe('low');
|
|
36
|
+
expect(pq.empty()).toBe(true);
|
|
37
|
+
});
|
|
38
|
+
test('should return undefined when popping empty queue', () => {
|
|
39
|
+
expect(pq.pop()).toBeUndefined();
|
|
40
|
+
});
|
|
41
|
+
test('should return front element without removing it', () => {
|
|
42
|
+
pq.push('low', 1);
|
|
43
|
+
pq.push('high', 3);
|
|
44
|
+
expect(pq.front()).toBe('high');
|
|
45
|
+
expect(pq.size()).toBe(2);
|
|
46
|
+
});
|
|
47
|
+
test('should return undefined when checking front of empty queue', () => {
|
|
48
|
+
expect(pq.front()).toBeUndefined();
|
|
49
|
+
});
|
|
50
|
+
test('should clear all elements from queue', () => {
|
|
51
|
+
pq.push('low', 1);
|
|
52
|
+
pq.push('high', 3);
|
|
53
|
+
pq.push('medium', 2);
|
|
54
|
+
pq.clear();
|
|
55
|
+
expect(pq.empty()).toBe(true);
|
|
56
|
+
expect(pq.size()).toBe(0);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=priority-queue.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priority-queue.test.js","sourceRoot":"","sources":["../../tests/priority-queue.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const queue_1 = require("../lib/queue");
|
|
4
|
+
describe('Queue', () => {
|
|
5
|
+
let queue;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
queue = new queue_1.Queue();
|
|
8
|
+
});
|
|
9
|
+
test('should create empty queue', () => {
|
|
10
|
+
expect(queue.empty()).toBe(true);
|
|
11
|
+
expect(queue.size()).toBe(0);
|
|
12
|
+
});
|
|
13
|
+
test('should push elements to queue', () => {
|
|
14
|
+
queue.push(1);
|
|
15
|
+
queue.push(2);
|
|
16
|
+
expect(queue.size()).toBe(2);
|
|
17
|
+
expect(queue.front()).toBe(1);
|
|
18
|
+
});
|
|
19
|
+
test('should pop elements from queue', () => {
|
|
20
|
+
queue.push(1);
|
|
21
|
+
queue.push(2);
|
|
22
|
+
expect(queue.pop()).toBe(1);
|
|
23
|
+
expect(queue.size()).toBe(1);
|
|
24
|
+
expect(queue.pop()).toBe(2);
|
|
25
|
+
expect(queue.empty()).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
test('should return undefined when popping empty queue', () => {
|
|
28
|
+
expect(queue.pop()).toBeUndefined();
|
|
29
|
+
});
|
|
30
|
+
test('should return front element without removing it', () => {
|
|
31
|
+
queue.push(1);
|
|
32
|
+
queue.push(2);
|
|
33
|
+
expect(queue.front()).toBe(1);
|
|
34
|
+
expect(queue.size()).toBe(2);
|
|
35
|
+
});
|
|
36
|
+
test('should return undefined when checking front of empty queue', () => {
|
|
37
|
+
expect(queue.front()).toBeUndefined();
|
|
38
|
+
});
|
|
39
|
+
test('should clear all elements from queue', () => {
|
|
40
|
+
queue.push(1);
|
|
41
|
+
queue.push(2);
|
|
42
|
+
queue.push(3);
|
|
43
|
+
queue.clear();
|
|
44
|
+
expect(queue.empty()).toBe(true);
|
|
45
|
+
expect(queue.size()).toBe(0);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=queue.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.test.js","sourceRoot":"","sources":["../../tests/queue.test.ts"],"names":[],"mappings":";;AAAA,wCAAqC;AAErC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,IAAI,KAAoB,CAAC;IAEzB,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,GAAG,IAAI,aAAK,EAAU,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC1C,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC3D,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAChD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export interface StackTy<T> {
|
|
2
|
+
push(element: T): void;
|
|
3
|
+
pop(): T | undefined;
|
|
4
|
+
top(): T | undefined;
|
|
5
|
+
empty(): boolean;
|
|
6
|
+
size(): number;
|
|
7
|
+
clear(): void;
|
|
8
|
+
}
|
|
9
|
+
export interface QueueTy<T> {
|
|
10
|
+
push(element: T): void;
|
|
11
|
+
pop(): T | undefined;
|
|
12
|
+
front(): T | undefined;
|
|
13
|
+
empty(): boolean;
|
|
14
|
+
size(): number;
|
|
15
|
+
clear(): void;
|
|
16
|
+
}
|
|
17
|
+
export interface PriorityQueueTy<T> {
|
|
18
|
+
push(element: T, priority: number): void;
|
|
19
|
+
pop(): T | undefined;
|
|
20
|
+
front(): T | undefined;
|
|
21
|
+
empty(): boolean;
|
|
22
|
+
size(): number;
|
|
23
|
+
clear(): void;
|
|
24
|
+
}
|
|
25
|
+
export interface BinarySearchTreeTy<T> {
|
|
26
|
+
insert(element: T): void;
|
|
27
|
+
remove(element: T): void;
|
|
28
|
+
find(element: T): boolean;
|
|
29
|
+
min(): T | undefined;
|
|
30
|
+
max(): T | undefined;
|
|
31
|
+
empty(): boolean;
|
|
32
|
+
clear(): void;
|
|
33
|
+
}
|
|
34
|
+
export interface DequeTy<T> {
|
|
35
|
+
pushFront(element: T): void;
|
|
36
|
+
pushBack(element: T): void;
|
|
37
|
+
popFront(): T | undefined;
|
|
38
|
+
popBack(): T | undefined;
|
|
39
|
+
front(): T | undefined;
|
|
40
|
+
back(): T | undefined;
|
|
41
|
+
empty(): boolean;
|
|
42
|
+
size(): number;
|
|
43
|
+
clear(): void;
|
|
44
|
+
}
|
|
45
|
+
export interface LinkedListTy<T> {
|
|
46
|
+
pushBack(element: T): void;
|
|
47
|
+
pushFront(element: T): void;
|
|
48
|
+
insert(element: T, position: number): boolean;
|
|
49
|
+
removeIf(condition: (element: T) => boolean): boolean;
|
|
50
|
+
removeAt(position: number): T | undefined;
|
|
51
|
+
get(position: number): T | undefined;
|
|
52
|
+
empty(): boolean;
|
|
53
|
+
size(): number;
|
|
54
|
+
clear(): void;
|
|
55
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":""}
|