@raikuxq/alg-ds 1.1.7 → 1.2.2
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 +71 -88
- package/lib/{algorithms → app/algorithms}/binary-search.d.ts +0 -0
- package/lib/app/algorithms/binary-search.js +27 -0
- package/lib/{algorithms → app/algorithms}/factorial.d.ts +0 -0
- package/lib/{algorithms → app/algorithms}/factorial.js +1 -1
- package/lib/{algorithms → app/algorithms}/fibonacci.d.ts +0 -0
- package/lib/app/algorithms/fibonacci.js +17 -0
- package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/AbstractGraphIterator.d.ts +4 -0
- package/lib/app/algorithms/graph/iterator/AbstractGraphIterator.js +87 -0
- package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/GraphIteratorBFS.d.ts +0 -0
- package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/GraphIteratorBFS.js +2 -2
- package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/GraphIteratorDFS.d.ts +0 -0
- package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/GraphIteratorDFS.js +2 -2
- package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/GraphIteratorDijkstra.d.ts +0 -0
- package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/GraphIteratorDijkstra.js +3 -5
- package/lib/{data-structures/Graph/strategy → app/algorithms/graph/iterator-strategy}/BFSIterationStrategy.d.ts +0 -0
- package/lib/{data-structures/Graph/strategy → app/algorithms/graph/iterator-strategy}/BFSIterationStrategy.js +1 -1
- package/lib/{data-structures/Graph/strategy → app/algorithms/graph/iterator-strategy}/DFSIterationStrategy.d.ts +0 -0
- package/lib/{data-structures/Graph/strategy → app/algorithms/graph/iterator-strategy}/DFSIterationStrategy.js +1 -1
- package/lib/{data-structures/Graph/strategy → app/algorithms/graph/iterator-strategy}/DijkstraIterationStrategy.d.ts +0 -0
- package/lib/{data-structures/Graph/strategy → app/algorithms/graph/iterator-strategy}/DijkstraIterationStrategy.js +1 -1
- package/lib/{data-structures/Graph → app/algorithms/graph}/presenter/presenterAdjacencyLists.d.ts +0 -0
- package/lib/{data-structures/Graph → app/algorithms/graph}/presenter/presenterAdjacencyLists.js +1 -1
- package/lib/{data-structures/Graph → app/algorithms/graph}/presenter/presenterAdjacencyMatrix.d.ts +2 -2
- package/lib/{data-structures/Graph → app/algorithms/graph}/presenter/presenterAdjacencyMatrix.js +1 -1
- package/lib/{data-structures/Graph → app/algorithms/graph}/searching/hasPath.d.ts +3 -3
- package/lib/app/algorithms/graph/searching/hasPath.js +30 -0
- package/lib/{data-structures/Graph → app/algorithms/graph}/searching/shortestPath.d.ts +3 -3
- package/lib/app/algorithms/graph/searching/shortestPath.js +30 -0
- package/lib/{data-structures/Graph → app/algorithms/graph}/transposing/transposeDirectedGraph.d.ts +0 -0
- package/lib/app/algorithms/graph/transposing/transposeDirectedGraph.js +14 -0
- package/lib/{algorithms → app/algorithms}/memoize.d.ts +0 -0
- package/lib/{algorithms → app/algorithms}/memoize.js +1 -1
- package/lib/{algorithms → app/algorithms}/sorts/bubble-sort.d.ts +0 -0
- package/lib/{algorithms → app/algorithms}/sorts/bubble-sort.js +1 -1
- package/lib/{algorithms → app/algorithms}/sorts/insertion-sort.d.ts +0 -0
- package/lib/app/algorithms/sorts/insertion-sort.js +25 -0
- package/lib/{algorithms → app/algorithms}/sorts/merge-sort.d.ts +0 -0
- package/lib/app/algorithms/sorts/merge-sort.js +61 -0
- package/lib/{algorithms → app/algorithms}/sorts/quick-sort.d.ts +0 -0
- package/lib/{algorithms → app/algorithms}/sorts/quick-sort.js +1 -1
- package/lib/{algorithms → app/algorithms}/sorts/select-sort.d.ts +0 -0
- package/lib/{algorithms → app/algorithms}/sorts/select-sort.js +1 -1
- package/lib/app/algorithms/transpose-matrix.d.ts +6 -0
- package/lib/{algorithms → app/algorithms}/transpose-matrix.js +2 -1
- package/lib/{constants.d.ts → app/constants.d.ts} +0 -0
- package/lib/{constants.js → app/constants.js} +1 -1
- package/lib/{data-structures → app/data-structures}/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.d.ts +0 -0
- package/lib/{data-structures → app/data-structures}/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.js +1 -1
- package/lib/{data-structures → app/data-structures}/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.d.ts +1 -1
- package/lib/{data-structures → app/data-structures}/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.js +1 -2
- package/lib/{data-structures → app/data-structures}/BinaryTree/BinarySearchTree/BinarySearchNode.d.ts +0 -0
- package/lib/{data-structures → app/data-structures}/BinaryTree/BinarySearchTree/BinarySearchNode.js +1 -1
- package/lib/{data-structures → app/data-structures}/BinaryTree/BinarySearchTree/BinarySearchTree.d.ts +6 -1
- package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.js +276 -0
- package/lib/{data-structures → app/data-structures}/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.d.ts +0 -0
- package/lib/{data-structures → app/data-structures}/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.js +1 -1
- package/lib/{data-structures → app/data-structures}/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.d.ts +1 -0
- package/lib/{data-structures → app/data-structures}/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.js +2 -1
- package/lib/app/data-structures/BinaryTree/_helpers/createBinaryTree.d.ts +6 -0
- package/lib/app/data-structures/BinaryTree/_helpers/createBinaryTree.js +22 -0
- package/lib/{data-structures → app/data-structures}/Graph/AbstractGraph.d.ts +3 -3
- package/lib/{data-structures → app/data-structures}/Graph/AbstractGraph.js +4 -4
- package/lib/{data-structures → app/data-structures}/Graph/DirectedGraph.d.ts +3 -0
- package/lib/{data-structures → app/data-structures}/Graph/DirectedGraph.js +4 -1
- package/lib/{data-structures → app/data-structures}/Graph/GraphEdge.d.ts +0 -0
- package/lib/{data-structures → app/data-structures}/Graph/GraphEdge.js +1 -1
- package/lib/{data-structures → app/data-structures}/Graph/UndirectedGraph.d.ts +3 -0
- package/lib/{data-structures → app/data-structures}/Graph/UndirectedGraph.js +4 -1
- package/lib/app/data-structures/Graph/_helpers/createGraph.d.ts +6 -0
- package/lib/app/data-structures/Graph/_helpers/createGraph.js +22 -0
- package/lib/app/data-structures/Graph/_helpers/createGraphFromMatrix.d.ts +7 -0
- package/lib/app/data-structures/Graph/_helpers/createGraphFromMatrix.js +42 -0
- package/lib/{data-structures/Graph/demo → app/data-structures/Graph/_helpers}/generateRandomGraph.d.ts +0 -0
- package/lib/app/data-structures/Graph/_helpers/generateRandomGraph.js +67 -0
- package/lib/{data-structures → app/data-structures}/HashTable/HashTable.d.ts +4 -4
- package/lib/app/data-structures/HashTable/HashTable.js +171 -0
- package/lib/{data-structures → app/data-structures}/HashTable/HashTableNode.d.ts +0 -0
- package/lib/{data-structures → app/data-structures}/HashTable/HashTableNode.js +1 -1
- package/lib/{data-structures → app/data-structures}/LinkedList/AbstractLinkedList/AbstractLinkedList.d.ts +17 -8
- package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.js +247 -0
- package/lib/{data-structures → app/data-structures}/LinkedList/AbstractLinkedList/AbstractLinkedNode.d.ts +0 -0
- package/lib/{data-structures → app/data-structures}/LinkedList/AbstractLinkedList/AbstractLinkedNode.js +1 -1
- package/lib/{data-structures → app/data-structures}/LinkedList/DoubleLinkedList/DoubleLinkedList.d.ts +2 -0
- package/lib/{data-structures → app/data-structures}/LinkedList/DoubleLinkedList/DoubleLinkedList.js +5 -3
- package/lib/{data-structures → app/data-structures}/LinkedList/DoubleLinkedList/DoubleLinkedNode.d.ts +0 -0
- package/lib/{data-structures → app/data-structures}/LinkedList/DoubleLinkedList/DoubleLinkedNode.js +1 -1
- package/lib/{data-structures → app/data-structures}/LinkedList/SingleLinkedList/SingleLinkedList.d.ts +2 -0
- package/lib/{data-structures → app/data-structures}/LinkedList/SingleLinkedList/SingleLinkedList.js +4 -2
- package/lib/{data-structures → app/data-structures}/LinkedList/SingleLinkedList/SingleLinkedNode.d.ts +0 -0
- package/lib/{data-structures → app/data-structures}/LinkedList/SingleLinkedList/SingleLinkedNode.js +1 -1
- package/lib/app/data-structures/LinkedList/_helpers/createLinkedList.d.ts +3 -0
- package/lib/app/data-structures/LinkedList/_helpers/createLinkedList.js +19 -0
- package/lib/{data-structures → app/data-structures}/LoopedArray/LoopedArray.d.ts +3 -0
- package/lib/app/data-structures/LoopedArray/LoopedArray.js +165 -0
- package/lib/{data-structures → app/data-structures}/Queue/Queue.d.ts +3 -3
- package/lib/app/data-structures/Queue/Queue.js +85 -0
- package/lib/{data-structures → app/data-structures}/Stack/Stack.d.ts +3 -3
- package/lib/app/data-structures/Stack/Stack.js +85 -0
- package/lib/{exceptions/IsEmptyException.d.ts → app/exceptions/CollectionIsEmptyException.d.ts} +1 -1
- package/lib/{exceptions/IsFullException.js → app/exceptions/CollectionIsEmptyException.js} +7 -7
- package/lib/{exceptions/IsFullException.d.ts → app/exceptions/CollectionIsFullException.d.ts} +1 -1
- package/lib/{exceptions/IsEmptyException.js → app/exceptions/CollectionIsFullException.js} +7 -7
- package/lib/{exceptions → app/exceptions}/IndexOutOfBoundsException.d.ts +0 -0
- package/lib/{exceptions → app/exceptions}/IndexOutOfBoundsException.js +1 -1
- package/lib/{exceptions → app/exceptions}/IsAlreadyExistsException.d.ts +0 -0
- package/lib/{exceptions → app/exceptions}/IsAlreadyExistsException.js +1 -1
- package/lib/{exceptions → app/exceptions}/IsNotFoundException.d.ts +0 -0
- package/lib/{exceptions → app/exceptions}/IsNotFoundException.js +1 -1
- package/lib/{exceptions/IllegalCapacityException.d.ts → app/exceptions/ValueOutOfRangeException.d.ts} +1 -1
- package/lib/{exceptions/IllegalCapacityException.js → app/exceptions/ValueOutOfRangeException.js} +7 -7
- package/lib/{exceptions → app/exceptions}/base/IllegalArgumentException.d.ts +0 -0
- package/lib/{exceptions → app/exceptions}/base/IllegalArgumentException.js +1 -1
- package/lib/{exceptions → app/exceptions}/base/IllegalStateException.d.ts +0 -0
- package/lib/{exceptions → app/exceptions}/base/IllegalStateException.js +1 -1
- package/lib/{types → app/types}/EnumBinarySearchTreeType.d.ts +0 -0
- package/lib/{types → app/types}/EnumBinarySearchTreeType.js +1 -1
- package/lib/app/types/EnumGraphTraversalType.d.ts +5 -0
- package/lib/app/types/EnumGraphTraversalType.js +10 -0
- package/lib/app/types/EnumGraphType.d.ts +4 -0
- package/lib/{types → app/types}/EnumGraphType.js +3 -3
- package/lib/{types → app/types}/EnumLinkedListType.d.ts +0 -0
- package/lib/{types → app/types}/EnumLinkedListType.js +1 -1
- package/lib/{types → app/types}/EnumRandomGenerationFormat.d.ts +2 -2
- package/lib/{types → app/types}/EnumRandomGenerationFormat.js +3 -3
- package/lib/app/types/EnumSortType.d.ts +7 -0
- package/lib/app/types/EnumSortType.js +12 -0
- package/lib/app/types/EnumTreeTraversalType.d.ts +5 -0
- package/lib/app/types/EnumTreeTraversalType.js +10 -0
- package/lib/{types → app/types}/FnCompareTwo.d.ts +0 -0
- package/lib/{types → app/types}/FnCompareTwo.js +1 -1
- package/lib/{types → app/types}/FnToMemoize.d.ts +0 -0
- package/lib/{types → app/types}/FnToMemoize.js +1 -1
- package/lib/{types → app/types}/IArrayFacade.d.ts +0 -0
- package/lib/{types → app/types}/IArrayFacade.js +1 -1
- package/lib/{types → app/types}/IBiDirectIterable.d.ts +0 -0
- package/lib/{types → app/types}/IBiDirectIterable.js +1 -1
- package/lib/{types → app/types}/IBiDirectIterator.d.ts +0 -0
- package/lib/{types → app/types}/IBiDirectIterator.js +1 -1
- package/lib/{types → app/types}/IBinaryTree.d.ts +0 -0
- package/lib/{types → app/types}/IBinaryTree.js +1 -1
- package/lib/{types → app/types}/IConvertableToArray.d.ts +0 -0
- package/lib/{types → app/types}/IConvertableToArray.js +1 -1
- package/lib/{types → app/types}/IGraph.d.ts +0 -0
- package/lib/{types → app/types}/IGraph.js +1 -1
- package/lib/{types → app/types}/IGraphIterationStrategy.d.ts +0 -0
- package/lib/{types → app/types}/IGraphIterationStrategy.js +1 -1
- package/lib/{types → app/types}/IGraphIterator.d.ts +0 -0
- package/lib/{types → app/types}/IGraphIterator.js +1 -1
- package/lib/{types → app/types}/IIterable.d.ts +0 -0
- package/lib/{types → app/types}/IIterable.js +1 -1
- package/lib/{types → app/types}/IIterator.d.ts +0 -0
- package/lib/{types → app/types}/IIterator.js +1 -1
- package/lib/{types → app/types}/IKeyValueStorage.d.ts +0 -0
- package/lib/{types → app/types}/IKeyValueStorage.js +1 -1
- package/lib/{types → app/types}/ILinearStorage.d.ts +0 -0
- package/lib/{types → app/types}/ILinearStorage.js +1 -1
- package/lib/{types → app/types}/ILinearStorageRA.d.ts +0 -0
- package/lib/{types → app/types}/ILinearStorageRA.js +1 -1
- package/lib/{types → app/types}/ILinkedList.d.ts +0 -0
- package/lib/{types → app/types}/ILinkedList.js +1 -1
- package/lib/app/types/TypeArrayMatrix.d.ts +1 -0
- package/lib/app/types/TypeArrayMatrix.js +3 -0
- package/lib/{utils.d.ts → app/utils.d.ts} +6 -2
- package/lib/{utils.js → app/utils.js} +12 -5
- package/lib/exports/algorithms.d.ts +15 -15
- package/lib/exports/algorithms.js +16 -16
- package/lib/exports/constants.d.ts +1 -1
- package/lib/exports/constants.js +2 -2
- package/lib/exports/data-structures.d.ts +10 -10
- package/lib/exports/data-structures.js +11 -11
- package/lib/exports/helpers.d.ts +5 -5
- package/lib/exports/helpers.js +6 -6
- package/lib/exports/sorts.d.ts +5 -5
- package/lib/exports/sorts.js +6 -6
- package/lib/exports/types.d.ts +16 -0
- package/lib/exports/types.js +34 -0
- package/lib/exports/utils.d.ts +2 -2
- package/lib/exports/utils.js +3 -3
- package/lib/exports.d.ts +47 -46
- package/lib/exports.js +51 -49
- package/lib/index.js +1 -2
- package/package.json +11 -6
- package/lib/algorithms/binary-search.js +0 -27
- package/lib/algorithms/fibonacci.js +0 -17
- package/lib/algorithms/sorts/insertion-sort.js +0 -25
- package/lib/algorithms/sorts/merge-sort.js +0 -61
- package/lib/algorithms/transpose-matrix.d.ts +0 -5
- package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.js +0 -271
- package/lib/data-structures/Graph/demo/generateRandomGraph.js +0 -66
- package/lib/data-structures/Graph/iterator/AbstractGraphIterator.js +0 -90
- package/lib/data-structures/Graph/searching/hasPath.js +0 -30
- package/lib/data-structures/Graph/searching/shortestPath.js +0 -30
- package/lib/data-structures/Graph/transposing/transposeDirectedGraph.js +0 -14
- package/lib/data-structures/HashTable/HashTable.js +0 -171
- package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.js +0 -241
- package/lib/data-structures/LoopedArray/LoopedArray.js +0 -169
- package/lib/data-structures/Queue/Queue.js +0 -85
- package/lib/data-structures/Stack/Stack.js +0 -85
- package/lib/helpers/createBinaryTree.d.ts +0 -6
- package/lib/helpers/createBinaryTree.js +0 -22
- package/lib/helpers/createGraph.d.ts +0 -6
- package/lib/helpers/createGraph.js +0 -24
- package/lib/helpers/createGraphFromMatrix.d.ts +0 -7
- package/lib/helpers/createGraphFromMatrix.js +0 -42
- package/lib/helpers/createLinkedList.d.ts +0 -3
- package/lib/helpers/createLinkedList.js +0 -21
- package/lib/types/ArrayMatrix.d.ts +0 -1
- package/lib/types/ArrayMatrix.js +0 -3
- package/lib/types/EnumGraphType.d.ts +0 -4
- package/lib/types/EnumTreeTraversalType.d.ts +0 -5
- package/lib/types/EnumTreeTraversalType.js +0 -10
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGraphFromMatrix = void 0;
|
|
4
|
+
var EnumGraphType_1 = require("../../../types/EnumGraphType");
|
|
5
|
+
var createGraph_1 = require("./createGraph");
|
|
6
|
+
var constants_1 = require("../../../constants");
|
|
7
|
+
var IllegalArgumentException_1 = require("../../../exceptions/base/IllegalArgumentException");
|
|
8
|
+
var utils_1 = require("../../../utils");
|
|
9
|
+
/**
|
|
10
|
+
* Creates a graph from N*N matrix that contains 1 in case of edge exists or 0 in case it does not
|
|
11
|
+
*/
|
|
12
|
+
exports.createGraphFromMatrix = function (matrix, fieldsList, type) {
|
|
13
|
+
if (!utils_1.checkIsArrayMatrix(matrix)) {
|
|
14
|
+
throw new IllegalArgumentException_1.default("Given array is not a matrix");
|
|
15
|
+
}
|
|
16
|
+
var graph = createGraph_1.createGraph(type);
|
|
17
|
+
fieldsList.forEach(function (fieldName) {
|
|
18
|
+
graph.addVertex(fieldName);
|
|
19
|
+
});
|
|
20
|
+
matrix.forEach(function (row, rowIndex) {
|
|
21
|
+
row.forEach(function (col, colIndex) {
|
|
22
|
+
var rowColState = matrix[rowIndex][colIndex];
|
|
23
|
+
var colRowState = matrix[colIndex][rowIndex];
|
|
24
|
+
if (type === EnumGraphType_1.EnumGraphType.UNDIRECTED) {
|
|
25
|
+
if (rowColState === constants_1.EDGE_EXISTS_STATE &&
|
|
26
|
+
colRowState === constants_1.EDGE_EXISTS_STATE) {
|
|
27
|
+
graph.addEdge(fieldsList[rowIndex], fieldsList[colIndex]);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (type === EnumGraphType_1.EnumGraphType.DIRECTED) {
|
|
31
|
+
if (rowColState === constants_1.EDGE_EXISTS_STATE) {
|
|
32
|
+
graph.addEdge(fieldsList[rowIndex], fieldsList[colIndex]);
|
|
33
|
+
}
|
|
34
|
+
if (colRowState === constants_1.EDGE_EXISTS_STATE) {
|
|
35
|
+
graph.addEdge(fieldsList[colIndex], fieldsList[rowIndex]);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
return graph;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlR3JhcGhGcm9tTWF0cml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLXN0cnVjdHVyZXMvR3JhcGgvX2hlbHBlcnMvY3JlYXRlR3JhcGhGcm9tTWF0cml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDhEQUE2RDtBQUU3RCw2Q0FBNEM7QUFDNUMsZ0RBQXVEO0FBQ3ZELDhGQUF5RjtBQUN6Rix3Q0FBb0Q7QUFFcEQ7O0dBRUc7QUFDVSxRQUFBLHFCQUFxQixHQUFHLFVBQ25DLE1BQXVCLEVBQ3ZCLFVBQW9CLEVBQ3BCLElBQW1CO0lBRW5CLElBQUksQ0FBQywwQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUMvQixNQUFNLElBQUksa0NBQXdCLENBQUMsNkJBQTZCLENBQUMsQ0FBQztLQUNuRTtJQUVELElBQU0sS0FBSyxHQUFjLHlCQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFDLFNBQVM7UUFDM0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QixDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBQyxHQUFrQixFQUFFLFFBQWdCO1FBQ2xELEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBQyxHQUFXLEVBQUUsUUFBZ0I7WUFDeEMsSUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUvQyxJQUFJLElBQUksS0FBSyw2QkFBYSxDQUFDLFVBQVUsRUFBRTtnQkFDckMsSUFDRSxXQUFXLEtBQUssNkJBQWlCO29CQUNqQyxXQUFXLEtBQUssNkJBQWlCLEVBQ2pDO29CQUNBLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2lCQUMzRDthQUNGO1lBRUQsSUFBSSxJQUFJLEtBQUssNkJBQWEsQ0FBQyxRQUFRLEVBQUU7Z0JBQ25DLElBQUksV0FBVyxLQUFLLDZCQUFpQixFQUFFO29CQUNyQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztpQkFDM0Q7Z0JBQ0QsSUFBSSxXQUFXLEtBQUssNkJBQWlCLEVBQUU7b0JBQ3JDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2lCQUMzRDthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDIn0=
|
|
File without changes
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateRandomGraph = void 0;
|
|
4
|
+
var EnumGraphType_1 = require("../../../types/EnumGraphType");
|
|
5
|
+
var createGraph_1 = require("./createGraph");
|
|
6
|
+
var utils_1 = require("../../../utils");
|
|
7
|
+
var EnumRandomGenerationFormat_1 = require("../../../types/EnumRandomGenerationFormat");
|
|
8
|
+
var ValueOutOfRangeException_1 = require("../../../exceptions/ValueOutOfRangeException");
|
|
9
|
+
var getRandomVertex = function () {
|
|
10
|
+
return "_" + Math.random().toString(36).substr(2, 9);
|
|
11
|
+
};
|
|
12
|
+
var getPossibleEdgesCount = function (type, verticesCount) {
|
|
13
|
+
var possibleEdgesCount = verticesCount * (verticesCount - 1);
|
|
14
|
+
switch (type) {
|
|
15
|
+
case EnumGraphType_1.EnumGraphType.DIRECTED: {
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
case EnumGraphType_1.EnumGraphType.UNDIRECTED: {
|
|
19
|
+
possibleEdgesCount = Math.floor(possibleEdgesCount / 2);
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return possibleEdgesCount;
|
|
24
|
+
};
|
|
25
|
+
var fillGraphRandomly = function (graph, format, verticesCount) {
|
|
26
|
+
switch (format) {
|
|
27
|
+
case EnumRandomGenerationFormat_1.EnumRandomGenerationFormat.HASH: {
|
|
28
|
+
for (var i = 0; i < verticesCount; i++) {
|
|
29
|
+
graph.addVertex(getRandomVertex());
|
|
30
|
+
}
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
case EnumRandomGenerationFormat_1.EnumRandomGenerationFormat.NUMBERS: {
|
|
34
|
+
for (var i = 0; i < verticesCount; i++) {
|
|
35
|
+
graph.addVertex((i + 1).toString());
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
exports.generateRandomGraph = function (verticesCount, edgesCount, type, format) {
|
|
42
|
+
if (type === void 0) { type = EnumGraphType_1.EnumGraphType.UNDIRECTED; }
|
|
43
|
+
if (format === void 0) { format = EnumRandomGenerationFormat_1.EnumRandomGenerationFormat.NUMBERS; }
|
|
44
|
+
var graph = createGraph_1.createGraph(type);
|
|
45
|
+
var possibleEdgesCount = getPossibleEdgesCount(type, verticesCount);
|
|
46
|
+
if (edgesCount <= 0 || edgesCount > possibleEdgesCount) {
|
|
47
|
+
throw new ValueOutOfRangeException_1.default("Edges count must be in range between 0 and " + possibleEdgesCount);
|
|
48
|
+
}
|
|
49
|
+
fillGraphRandomly(graph, format, verticesCount);
|
|
50
|
+
var addedVertices = graph.vertices();
|
|
51
|
+
var addedEdgesCount = 0;
|
|
52
|
+
while (addedEdgesCount < edgesCount) {
|
|
53
|
+
var randomizeIndex = function () {
|
|
54
|
+
return utils_1.randomizeNumberInRange(0, addedVertices.length);
|
|
55
|
+
};
|
|
56
|
+
var randomVertexFrom = addedVertices[randomizeIndex()];
|
|
57
|
+
var randomVertexTo = addedVertices[randomizeIndex()];
|
|
58
|
+
var isEdgeAlreadyExists = graph.hasEdge(randomVertexFrom, randomVertexTo);
|
|
59
|
+
var isTheSameVertex = randomVertexFrom === randomVertexTo;
|
|
60
|
+
if (!isTheSameVertex && !isEdgeAlreadyExists) {
|
|
61
|
+
graph.addEdge(randomVertexFrom, randomVertexTo);
|
|
62
|
+
addedEdgesCount++;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return graph;
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVSYW5kb21HcmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1zdHJ1Y3R1cmVzL0dyYXBoL19oZWxwZXJzL2dlbmVyYXRlUmFuZG9tR3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsOERBQTZEO0FBQzdELDZDQUE0QztBQUM1Qyx3Q0FBd0Q7QUFDeEQsd0ZBQXVGO0FBQ3ZGLHlGQUFvRjtBQUVwRixJQUFNLGVBQWUsR0FBRztJQUN0QixPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkQsQ0FBQyxDQUFDO0FBRUYsSUFBTSxxQkFBcUIsR0FBRyxVQUM1QixJQUFtQixFQUNuQixhQUFxQjtJQUVyQixJQUFJLGtCQUFrQixHQUFHLGFBQWEsR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUU3RCxRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssNkJBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQixNQUFNO1NBQ1A7UUFDRCxLQUFLLDZCQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0Isa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN4RCxNQUFNO1NBQ1A7S0FDRjtJQUVELE9BQU8sa0JBQWtCLENBQUM7QUFDNUIsQ0FBQyxDQUFDO0FBRUYsSUFBTSxpQkFBaUIsR0FBRyxVQUN4QixLQUFxQixFQUNyQixNQUFrQyxFQUNsQyxhQUFxQjtJQUVyQixRQUFRLE1BQU0sRUFBRTtRQUNkLEtBQUssdURBQTBCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO2FBQ3BDO1lBQ0QsTUFBTTtTQUNQO1FBQ0QsS0FBSyx1REFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDckM7WUFDRCxNQUFNO1NBQ1A7S0FDRjtBQUNILENBQUMsQ0FBQztBQUVXLFFBQUEsbUJBQW1CLEdBQUcsVUFDakMsYUFBcUIsRUFDckIsVUFBa0IsRUFDbEIsSUFBOEMsRUFDOUMsTUFBdUU7SUFEdkUscUJBQUEsRUFBQSxPQUFzQiw2QkFBYSxDQUFDLFVBQVU7SUFDOUMsdUJBQUEsRUFBQSxTQUFxQyx1REFBMEIsQ0FBQyxPQUFPO0lBRXZFLElBQU0sS0FBSyxHQUFHLHlCQUFXLENBQVMsSUFBSSxDQUFDLENBQUM7SUFDeEMsSUFBTSxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFdEUsSUFBSSxVQUFVLElBQUksQ0FBQyxJQUFJLFVBQVUsR0FBRyxrQkFBa0IsRUFBRTtRQUN0RCxNQUFNLElBQUksa0NBQXdCLENBQ2hDLGdEQUE4QyxrQkFBb0IsQ0FDbkUsQ0FBQztLQUNIO0lBRUQsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNoRCxJQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkMsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBRXhCLE9BQU8sZUFBZSxHQUFHLFVBQVUsRUFBRTtRQUNuQyxJQUFNLGNBQWMsR0FBRztZQUNyQixPQUFPLDhCQUFzQixDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDO1FBQ0YsSUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUV2RCxJQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDNUUsSUFBTSxlQUFlLEdBQUcsZ0JBQWdCLEtBQUssY0FBYyxDQUFDO1FBRTVELElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM1QyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ2hELGVBQWUsRUFBRSxDQUFDO1NBQ25CO0tBQ0Y7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyJ9
|
|
@@ -16,7 +16,7 @@ export default class HashTable<T> implements IKeyValueStorage<T> {
|
|
|
16
16
|
private storageCapacity;
|
|
17
17
|
/**
|
|
18
18
|
* Given init capacity size will be used
|
|
19
|
-
* @throws when initial capacity value is not larger than 0
|
|
19
|
+
* @throws {ValueOutOfRangeException} when initial capacity value is not larger than 0
|
|
20
20
|
*/
|
|
21
21
|
constructor(initialCapacity?: number);
|
|
22
22
|
/**
|
|
@@ -33,7 +33,7 @@ export default class HashTable<T> implements IKeyValueStorage<T> {
|
|
|
33
33
|
private resizeStorage;
|
|
34
34
|
/**
|
|
35
35
|
* Will find node instance by its key
|
|
36
|
-
* @throws when element does not exist
|
|
36
|
+
* @throws {IsNotFoundException} when element does not exist
|
|
37
37
|
*/
|
|
38
38
|
private findNode;
|
|
39
39
|
/**
|
|
@@ -50,12 +50,12 @@ export default class HashTable<T> implements IKeyValueStorage<T> {
|
|
|
50
50
|
set(key: string, data: T): void;
|
|
51
51
|
/**
|
|
52
52
|
* Will update item property isDeleted to false
|
|
53
|
-
* @throws when element does not exist
|
|
53
|
+
* @throws {IsNotFoundException} when element does not exist
|
|
54
54
|
*/
|
|
55
55
|
delete(key: string): void;
|
|
56
56
|
/**
|
|
57
57
|
* Will find item in hash table
|
|
58
|
-
* @throws when element does not exist
|
|
58
|
+
* @throws {IsNotFoundException} when element does not exist
|
|
59
59
|
*/
|
|
60
60
|
get(key: string): T;
|
|
61
61
|
/**
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var HashTableNode_1 = require("./HashTableNode");
|
|
4
|
+
var ValueOutOfRangeException_1 = require("../../exceptions/ValueOutOfRangeException");
|
|
5
|
+
var IsNotFoundException_1 = require("../../exceptions/IsNotFoundException");
|
|
6
|
+
/**
|
|
7
|
+
* Implementation of open addressing hash table using quadratic probing
|
|
8
|
+
*/
|
|
9
|
+
var HashTable = /** @class */ (function () {
|
|
10
|
+
/**
|
|
11
|
+
* Given init capacity size will be used
|
|
12
|
+
* @throws {ValueOutOfRangeException} when initial capacity value is not larger than 0
|
|
13
|
+
*/
|
|
14
|
+
function HashTable(initialCapacity) {
|
|
15
|
+
if (initialCapacity === void 0) { initialCapacity = HashTable.DEFAULT_MAX_CAPACITY; }
|
|
16
|
+
this.storageCapacity = 0;
|
|
17
|
+
if (initialCapacity <= 0) {
|
|
18
|
+
throw new ValueOutOfRangeException_1.default("Size must be larger than 0");
|
|
19
|
+
}
|
|
20
|
+
this.maxCapacity = initialCapacity;
|
|
21
|
+
this.storage = new Array(this.maxCapacity).fill(null);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Main-hash function
|
|
25
|
+
*/
|
|
26
|
+
HashTable.prototype.hashFn = function (key, number) {
|
|
27
|
+
return ((this.innerHashFn(key) + 127 * number + 365 * number * number) %
|
|
28
|
+
this.maxCapacity);
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Helper-hash function
|
|
32
|
+
*/
|
|
33
|
+
HashTable.prototype.innerHashFn = function (key) {
|
|
34
|
+
var length = key.length;
|
|
35
|
+
if (length === 0) {
|
|
36
|
+
return 0;
|
|
37
|
+
}
|
|
38
|
+
var substring = key.substring(0, length - 1);
|
|
39
|
+
var symbol = key.charCodeAt(length - 1);
|
|
40
|
+
return (127 * this.innerHashFn(substring) + symbol) % this.maxCapacity;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Max capacity will be increased and storage will be overwritten
|
|
44
|
+
*/
|
|
45
|
+
HashTable.prototype.resizeStorage = function () {
|
|
46
|
+
this.maxCapacity *= 2;
|
|
47
|
+
var newArray = new Array(this.maxCapacity).fill(null);
|
|
48
|
+
for (var i = 0; i < this.storage.length; i++) {
|
|
49
|
+
var element = this.storage[i];
|
|
50
|
+
if (element != null) {
|
|
51
|
+
for (var j = 0; j < this.maxCapacity; j++) {
|
|
52
|
+
var newIndex = this.hashFn(element.key, j);
|
|
53
|
+
if (newArray[newIndex] == null) {
|
|
54
|
+
newArray[newIndex] = element;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return newArray;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Will find node instance by its key
|
|
64
|
+
* @throws {IsNotFoundException} when element does not exist
|
|
65
|
+
*/
|
|
66
|
+
HashTable.prototype.findNode = function (key) {
|
|
67
|
+
for (var i = 0; i < this.maxCapacity; i++) {
|
|
68
|
+
var index = this.hashFn(key, i);
|
|
69
|
+
var node = this.storage[index];
|
|
70
|
+
if ((node === null || node === void 0 ? void 0 : node.key) === key) {
|
|
71
|
+
if (node === null || node === void 0 ? void 0 : node.isDeleted) {
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
return node;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
throw new IsNotFoundException_1.default("Element does not exist");
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Will create new node instance and set in to storage by index
|
|
81
|
+
*/
|
|
82
|
+
HashTable.prototype.addNode = function (key, data, index) {
|
|
83
|
+
this.storage[index] = new HashTableNode_1.default(key, data);
|
|
84
|
+
this.storageCapacity++;
|
|
85
|
+
var loadFactor = this.storageCapacity / this.maxCapacity;
|
|
86
|
+
if (loadFactor >= HashTable.MAX_LOAD_FACTOR) {
|
|
87
|
+
this.storage = this.resizeStorage();
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Will create new node instance and set in to storage by index
|
|
92
|
+
*/
|
|
93
|
+
HashTable.prototype.updateNode = function (data, index) {
|
|
94
|
+
this.storage[index].data = data;
|
|
95
|
+
this.storage[index].isDeleted = false;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Will insert item to hash table
|
|
99
|
+
*/
|
|
100
|
+
HashTable.prototype.set = function (key, data) {
|
|
101
|
+
for (var i = 0; i < this.maxCapacity; i++) {
|
|
102
|
+
var index = this.hashFn(key, i);
|
|
103
|
+
var node = this.storage[index];
|
|
104
|
+
var shouldAddNode = node === null;
|
|
105
|
+
if (shouldAddNode) {
|
|
106
|
+
this.addNode(key, data, index);
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
var shouldUpdateNode = node.key === key;
|
|
110
|
+
if (shouldUpdateNode) {
|
|
111
|
+
this.updateNode(data, index);
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Will update item property isDeleted to false
|
|
118
|
+
* @throws {IsNotFoundException} when element does not exist
|
|
119
|
+
*/
|
|
120
|
+
HashTable.prototype.delete = function (key) {
|
|
121
|
+
for (var i = 0; i < this.maxCapacity; i++) {
|
|
122
|
+
var index = this.hashFn(key, i);
|
|
123
|
+
if (this.storage[index] !== null) {
|
|
124
|
+
this.storage[index].isDeleted = true;
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
throw new IsNotFoundException_1.default("Element does not exist");
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Will find item in hash table
|
|
132
|
+
* @throws {IsNotFoundException} when element does not exist
|
|
133
|
+
*/
|
|
134
|
+
HashTable.prototype.get = function (key) {
|
|
135
|
+
return this.findNode(key).data;
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Check if node with given key exists
|
|
139
|
+
*/
|
|
140
|
+
HashTable.prototype.has = function (key) {
|
|
141
|
+
try {
|
|
142
|
+
return Boolean(this.findNode(key));
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Added elements count
|
|
150
|
+
*/
|
|
151
|
+
HashTable.prototype.length = function () {
|
|
152
|
+
var actualItems = this.storage.filter(function (item) {
|
|
153
|
+
return item !== null && !item.isDeleted;
|
|
154
|
+
});
|
|
155
|
+
return actualItems.length;
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* Will overwrite storage with array of null elements
|
|
159
|
+
*/
|
|
160
|
+
HashTable.prototype.clear = function () {
|
|
161
|
+
this.storage = new Array(HashTable.DEFAULT_MAX_CAPACITY).fill(null);
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
Constants
|
|
165
|
+
*/
|
|
166
|
+
HashTable.DEFAULT_MAX_CAPACITY = 100;
|
|
167
|
+
HashTable.MAX_LOAD_FACTOR = 0.75;
|
|
168
|
+
return HashTable;
|
|
169
|
+
}());
|
|
170
|
+
exports.default = HashTable;
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFzaFRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLXN0cnVjdHVyZXMvSGFzaFRhYmxlL0hhc2hUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLGlEQUE0QztBQUM1QyxzRkFBaUY7QUFDakYsNEVBQXVFO0FBRXZFOztHQUVHO0FBQ0g7SUFjRTs7O09BR0c7SUFDSCxtQkFBbUIsZUFBd0Q7UUFBeEQsZ0NBQUEsRUFBQSxrQkFBMEIsU0FBUyxDQUFDLG9CQUFvQjtRQU5uRSxvQkFBZSxHQUFHLENBQUMsQ0FBQztRQU8xQixJQUFJLGVBQWUsSUFBSSxDQUFDLEVBQUU7WUFDeEIsTUFBTSxJQUFJLGtDQUF3QixDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDbEU7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssMEJBQU0sR0FBZCxVQUFlLEdBQVcsRUFBRSxNQUFjO1FBQ3hDLE9BQU8sQ0FDTCxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUM5RCxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssK0JBQVcsR0FBbkIsVUFBb0IsR0FBVztRQUM3QixJQUFNLE1BQU0sR0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBRWxDLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoQixPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsSUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVB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
|
|
File without changes
|
|
@@ -36,4 +36,4 @@ var HashTableNode = /** @class */ (function () {
|
|
|
36
36
|
return HashTableNode;
|
|
37
37
|
}());
|
|
38
38
|
exports.default = HashTableNode;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFzaFRhYmxlTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1zdHJ1Y3R1cmVzL0hhc2hUYWJsZS9IYXNoVGFibGVOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7SUFLRSx1QkFBbUIsR0FBVyxFQUFFLElBQU87UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELHNCQUFJLCtCQUFJO2FBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQzthQUVELFVBQVMsS0FBUTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7OztPQUpBO0lBTUQsc0JBQUksOEJBQUc7YUFBUDtZQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLG9DQUFTO2FBQWI7WUFDRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekIsQ0FBQzthQUVELFVBQWMsS0FBYztZQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDOzs7T0FKQTtJQUtILG9CQUFDO0FBQUQsQ0FBQyxBQTlCRCxJQThCQyJ9
|
|
@@ -11,22 +11,23 @@ export default abstract class AbstractLinkedList<T> implements ILinkedList<T> {
|
|
|
11
11
|
protected constructor(capacity?: number);
|
|
12
12
|
/**
|
|
13
13
|
* Will calculate real capacity value
|
|
14
|
-
* @throws when capacity
|
|
14
|
+
* @throws {ValueOutOfRangeException} when capacity is out of range
|
|
15
15
|
*/
|
|
16
16
|
private static calculateCapacity;
|
|
17
17
|
/**
|
|
18
18
|
* Will insert node between nodeLeft and nodeRight
|
|
19
|
-
* @throws when list is full
|
|
19
|
+
* @throws {CollectionIsFullException} when list is full
|
|
20
20
|
*/
|
|
21
21
|
private insertNodeBetweenTwoNodes;
|
|
22
22
|
/**
|
|
23
23
|
* Will remove the node from its neighbors nodes links
|
|
24
|
-
* @throws when
|
|
24
|
+
* @throws {CollectionIsEmptyException} when list is empty
|
|
25
25
|
*/
|
|
26
26
|
private deleteNode;
|
|
27
27
|
/**
|
|
28
28
|
* Will find node by its index
|
|
29
|
-
* @throws when
|
|
29
|
+
* @throws {CollectionIsEmptyException} when list is empty
|
|
30
|
+
* @throws {IndexOutOfBoundsException} when given index is out of range
|
|
30
31
|
*/
|
|
31
32
|
protected getNodeByIndex(index: number): AbstractLinkedNode<T>;
|
|
32
33
|
/**
|
|
@@ -51,26 +52,33 @@ export default abstract class AbstractLinkedList<T> implements ILinkedList<T> {
|
|
|
51
52
|
protected abstract createNode(value: T): AbstractLinkedNode<T>;
|
|
52
53
|
/**
|
|
53
54
|
* Push into start
|
|
55
|
+
* @throws {CollectionIsFullException} when there is no space available
|
|
54
56
|
*/
|
|
55
57
|
unshift(value: T): void;
|
|
56
58
|
/**
|
|
57
59
|
* Push into end
|
|
60
|
+
* @throws {CollectionIsFullException} when there is no space available
|
|
58
61
|
*/
|
|
59
62
|
push(value: T): void;
|
|
60
63
|
/**
|
|
61
64
|
* Push from index
|
|
65
|
+
* @throws {IndexOutOfBoundsException} when given index is out of range
|
|
66
|
+
* @throws {CollectionIsFullException} when there is no space available
|
|
62
67
|
*/
|
|
63
68
|
pushFromIndex(value: T, fromIndex: number): void;
|
|
64
69
|
/**
|
|
65
70
|
* Delete node from list's end
|
|
71
|
+
* @throws {CollectionIsEmptyException} when list is empty
|
|
66
72
|
*/
|
|
67
73
|
pop(): T;
|
|
68
74
|
/**
|
|
69
75
|
* Delete node from list's start and get its data
|
|
76
|
+
* @throws {CollectionIsEmptyException} when list is empty
|
|
70
77
|
*/
|
|
71
78
|
shift(): T;
|
|
72
79
|
/**
|
|
73
80
|
* Delete node from list by index from start
|
|
81
|
+
* @throws {CollectionIsEmptyException} when list is empty
|
|
74
82
|
*/
|
|
75
83
|
deleteFromIndex(fromIndex: number): T;
|
|
76
84
|
/**
|
|
@@ -91,17 +99,18 @@ export default abstract class AbstractLinkedList<T> implements ILinkedList<T> {
|
|
|
91
99
|
has(item: T): boolean;
|
|
92
100
|
/**
|
|
93
101
|
* Get head element data
|
|
94
|
-
* @throws when head does not exist
|
|
102
|
+
* @throws {CollectionIsEmptyException} when head does not exist
|
|
95
103
|
*/
|
|
96
104
|
peek(): T;
|
|
97
105
|
/**
|
|
98
106
|
* Get tail element data
|
|
99
|
-
* @throws when tail does not exists
|
|
107
|
+
* @throws {CollectionIsEmptyException} when tail does not exists
|
|
100
108
|
*/
|
|
101
109
|
peekFromStart(): T;
|
|
102
110
|
/**
|
|
103
111
|
* Get list element by index from start
|
|
104
|
-
* @throws when
|
|
112
|
+
* @throws {CollectionIsEmptyException} when list is empty
|
|
113
|
+
* @throws {IndexOutOfBoundsException} when given index is out of range
|
|
105
114
|
*/
|
|
106
115
|
peekByIndex(index: number): T;
|
|
107
116
|
/**
|
|
@@ -114,7 +123,7 @@ export default abstract class AbstractLinkedList<T> implements ILinkedList<T> {
|
|
|
114
123
|
getAsArray(): Array<T>;
|
|
115
124
|
/**
|
|
116
125
|
* Add elements to list from array
|
|
117
|
-
* @throws when list is full
|
|
126
|
+
* @throws {CollectionIsFullException} when list is full
|
|
118
127
|
* */
|
|
119
128
|
pushFromArray(elements: Array<T>): void;
|
|
120
129
|
/**
|