@raikuxq/alg-ds 1.2.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/README.md +0 -25
  2. package/lib/index.d.ts +1216 -3
  3. package/lib/index.mjs +1 -0
  4. package/package.json +78 -72
  5. package/lib/app/algorithms/binary-search.d.ts +0 -5
  6. package/lib/app/algorithms/binary-search.js +0 -27
  7. package/lib/app/algorithms/factorial.d.ts +0 -9
  8. package/lib/app/algorithms/factorial.js +0 -17
  9. package/lib/app/algorithms/fibonacci.d.ts +0 -9
  10. package/lib/app/algorithms/fibonacci.js +0 -17
  11. package/lib/app/algorithms/graph/iterator/AbstractGraphIterator.d.ts +0 -39
  12. package/lib/app/algorithms/graph/iterator/AbstractGraphIterator.js +0 -87
  13. package/lib/app/algorithms/graph/iterator/GraphIteratorBFS.d.ts +0 -28
  14. package/lib/app/algorithms/graph/iterator/GraphIteratorBFS.js +0 -70
  15. package/lib/app/algorithms/graph/iterator/GraphIteratorDFS.d.ts +0 -28
  16. package/lib/app/algorithms/graph/iterator/GraphIteratorDFS.js +0 -70
  17. package/lib/app/algorithms/graph/iterator/GraphIteratorDijkstra.d.ts +0 -32
  18. package/lib/app/algorithms/graph/iterator/GraphIteratorDijkstra.js +0 -97
  19. package/lib/app/algorithms/graph/iterator-strategy/BFSIterationStrategy.d.ts +0 -6
  20. package/lib/app/algorithms/graph/iterator-strategy/BFSIterationStrategy.js +0 -13
  21. package/lib/app/algorithms/graph/iterator-strategy/DFSIterationStrategy.d.ts +0 -6
  22. package/lib/app/algorithms/graph/iterator-strategy/DFSIterationStrategy.js +0 -13
  23. package/lib/app/algorithms/graph/iterator-strategy/DijkstraIterationStrategy.d.ts +0 -6
  24. package/lib/app/algorithms/graph/iterator-strategy/DijkstraIterationStrategy.js +0 -13
  25. package/lib/app/algorithms/graph/presenter/presenterAdjacencyLists.d.ts +0 -19
  26. package/lib/app/algorithms/graph/presenter/presenterAdjacencyLists.js +0 -28
  27. package/lib/app/algorithms/graph/presenter/presenterAdjacencyMatrix.d.ts +0 -32
  28. package/lib/app/algorithms/graph/presenter/presenterAdjacencyMatrix.js +0 -48
  29. package/lib/app/algorithms/graph/searching/hasPath.d.ts +0 -9
  30. package/lib/app/algorithms/graph/searching/hasPath.js +0 -30
  31. package/lib/app/algorithms/graph/searching/shortestPath.d.ts +0 -9
  32. package/lib/app/algorithms/graph/searching/shortestPath.js +0 -30
  33. package/lib/app/algorithms/graph/transposing/transposeDirectedGraph.d.ts +0 -2
  34. package/lib/app/algorithms/graph/transposing/transposeDirectedGraph.js +0 -14
  35. package/lib/app/algorithms/memoize.d.ts +0 -5
  36. package/lib/app/algorithms/memoize.js +0 -22
  37. package/lib/app/algorithms/sorts/bubble-sort.d.ts +0 -9
  38. package/lib/app/algorithms/sorts/bubble-sort.js +0 -23
  39. package/lib/app/algorithms/sorts/insertion-sort.d.ts +0 -9
  40. package/lib/app/algorithms/sorts/insertion-sort.js +0 -25
  41. package/lib/app/algorithms/sorts/merge-sort.d.ts +0 -9
  42. package/lib/app/algorithms/sorts/merge-sort.js +0 -61
  43. package/lib/app/algorithms/sorts/quick-sort.d.ts +0 -9
  44. package/lib/app/algorithms/sorts/quick-sort.js +0 -45
  45. package/lib/app/algorithms/sorts/select-sort.d.ts +0 -9
  46. package/lib/app/algorithms/sorts/select-sort.js +0 -20
  47. package/lib/app/algorithms/transpose-matrix.d.ts +0 -6
  48. package/lib/app/algorithms/transpose-matrix.js +0 -19
  49. package/lib/app/constants.d.ts +0 -2
  50. package/lib/app/constants.js +0 -6
  51. package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.d.ts +0 -15
  52. package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.js +0 -53
  53. package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.d.ts +0 -60
  54. package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.js +0 -35
  55. package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.d.ts +0 -13
  56. package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.js +0 -59
  57. package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.d.ts +0 -75
  58. package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.js +0 -276
  59. package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.d.ts +0 -16
  60. package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.js +0 -70
  61. package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.d.ts +0 -58
  62. package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.js +0 -236
  63. package/lib/app/data-structures/BinaryTree/_helpers/createBinaryTree.d.ts +0 -6
  64. package/lib/app/data-structures/BinaryTree/_helpers/createBinaryTree.js +0 -22
  65. package/lib/app/data-structures/Graph/AbstractGraph.d.ts +0 -84
  66. package/lib/app/data-structures/Graph/AbstractGraph.js +0 -143
  67. package/lib/app/data-structures/Graph/DirectedGraph.d.ts +0 -27
  68. package/lib/app/data-structures/Graph/DirectedGraph.js +0 -89
  69. package/lib/app/data-structures/Graph/GraphEdge.d.ts +0 -16
  70. package/lib/app/data-structures/Graph/GraphEdge.js +0 -43
  71. package/lib/app/data-structures/Graph/UndirectedGraph.d.ts +0 -31
  72. package/lib/app/data-structures/Graph/UndirectedGraph.js +0 -106
  73. package/lib/app/data-structures/Graph/_helpers/createGraph.d.ts +0 -6
  74. package/lib/app/data-structures/Graph/_helpers/createGraph.js +0 -22
  75. package/lib/app/data-structures/Graph/_helpers/createGraphFromMatrix.d.ts +0 -7
  76. package/lib/app/data-structures/Graph/_helpers/createGraphFromMatrix.js +0 -42
  77. package/lib/app/data-structures/Graph/_helpers/generateRandomGraph.d.ts +0 -4
  78. package/lib/app/data-structures/Graph/_helpers/generateRandomGraph.js +0 -67
  79. package/lib/app/data-structures/HashTable/HashTable.d.ts +0 -73
  80. package/lib/app/data-structures/HashTable/HashTable.js +0 -171
  81. package/lib/app/data-structures/HashTable/HashTableNode.d.ts +0 -11
  82. package/lib/app/data-structures/HashTable/HashTableNode.js +0 -39
  83. package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.d.ts +0 -134
  84. package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.js +0 -247
  85. package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.d.ts +0 -20
  86. package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.js +0 -41
  87. package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.d.ts +0 -42
  88. package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.js +0 -98
  89. package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.d.ts +0 -25
  90. package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.js +0 -65
  91. package/lib/app/data-structures/LinkedList/DoubleLinkedList/IterableDoubleLinkedList.d.ts +0 -18
  92. package/lib/app/data-structures/LinkedList/DoubleLinkedList/IterableDoubleLinkedList.js +0 -86
  93. package/lib/app/data-structures/LinkedList/SingleLinkedList/IterableSingleLinkedList.d.ts +0 -18
  94. package/lib/app/data-structures/LinkedList/SingleLinkedList/IterableSingleLinkedList.js +0 -68
  95. package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.d.ts +0 -46
  96. package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.js +0 -103
  97. package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.d.ts +0 -7
  98. package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.js +0 -29
  99. package/lib/app/data-structures/LinkedList/_helpers/createLinkedList.d.ts +0 -3
  100. package/lib/app/data-structures/LinkedList/_helpers/createLinkedList.js +0 -34
  101. package/lib/app/data-structures/LoopedArray/LoopedArray.d.ts +0 -86
  102. package/lib/app/data-structures/LoopedArray/LoopedArray.js +0 -165
  103. package/lib/app/data-structures/Queue/Queue.d.ts +0 -50
  104. package/lib/app/data-structures/Queue/Queue.js +0 -85
  105. package/lib/app/data-structures/Stack/Stack.d.ts +0 -50
  106. package/lib/app/data-structures/Stack/Stack.js +0 -85
  107. package/lib/app/exceptions/CollectionIsEmptyException.d.ts +0 -4
  108. package/lib/app/exceptions/CollectionIsEmptyException.js +0 -28
  109. package/lib/app/exceptions/CollectionIsFullException.d.ts +0 -4
  110. package/lib/app/exceptions/CollectionIsFullException.js +0 -28
  111. package/lib/app/exceptions/IndexOutOfBoundsException.d.ts +0 -4
  112. package/lib/app/exceptions/IndexOutOfBoundsException.js +0 -28
  113. package/lib/app/exceptions/IsAlreadyExistsException.d.ts +0 -4
  114. package/lib/app/exceptions/IsAlreadyExistsException.js +0 -28
  115. package/lib/app/exceptions/IsNotFoundException.d.ts +0 -4
  116. package/lib/app/exceptions/IsNotFoundException.js +0 -28
  117. package/lib/app/exceptions/ValueOutOfRangeException.d.ts +0 -4
  118. package/lib/app/exceptions/ValueOutOfRangeException.js +0 -28
  119. package/lib/app/exceptions/base/IllegalArgumentException.d.ts +0 -3
  120. package/lib/app/exceptions/base/IllegalArgumentException.js +0 -27
  121. package/lib/app/exceptions/base/IllegalStateException.d.ts +0 -3
  122. package/lib/app/exceptions/base/IllegalStateException.js +0 -27
  123. package/lib/app/types/EnumBinarySearchTreeType.d.ts +0 -4
  124. package/lib/app/types/EnumBinarySearchTreeType.js +0 -9
  125. package/lib/app/types/EnumGraphTraversalType.d.ts +0 -5
  126. package/lib/app/types/EnumGraphTraversalType.js +0 -10
  127. package/lib/app/types/EnumGraphType.d.ts +0 -4
  128. package/lib/app/types/EnumGraphType.js +0 -9
  129. package/lib/app/types/EnumLinkedListType.d.ts +0 -4
  130. package/lib/app/types/EnumLinkedListType.js +0 -9
  131. package/lib/app/types/EnumRandomGenerationFormat.d.ts +0 -4
  132. package/lib/app/types/EnumRandomGenerationFormat.js +0 -9
  133. package/lib/app/types/EnumSortType.d.ts +0 -7
  134. package/lib/app/types/EnumSortType.js +0 -12
  135. package/lib/app/types/EnumTreeTraversalType.d.ts +0 -5
  136. package/lib/app/types/EnumTreeTraversalType.js +0 -10
  137. package/lib/app/types/FnCompareTwo.d.ts +0 -1
  138. package/lib/app/types/FnCompareTwo.js +0 -3
  139. package/lib/app/types/FnToMemoize.d.ts +0 -1
  140. package/lib/app/types/FnToMemoize.js +0 -3
  141. package/lib/app/types/IArrayFacade.d.ts +0 -4
  142. package/lib/app/types/IArrayFacade.js +0 -3
  143. package/lib/app/types/IBiDirectIterable.d.ts +0 -5
  144. package/lib/app/types/IBiDirectIterable.js +0 -3
  145. package/lib/app/types/IBiDirectIterator.d.ts +0 -11
  146. package/lib/app/types/IBiDirectIterator.js +0 -3
  147. package/lib/app/types/IBinaryTree.d.ts +0 -12
  148. package/lib/app/types/IBinaryTree.js +0 -3
  149. package/lib/app/types/IConvertableToArray.d.ts +0 -4
  150. package/lib/app/types/IConvertableToArray.js +0 -3
  151. package/lib/app/types/IGraph.d.ts +0 -14
  152. package/lib/app/types/IGraph.js +0 -3
  153. package/lib/app/types/IGraphIterationStrategy.d.ts +0 -5
  154. package/lib/app/types/IGraphIterationStrategy.js +0 -3
  155. package/lib/app/types/IGraphIterator.d.ts +0 -11
  156. package/lib/app/types/IGraphIterator.js +0 -3
  157. package/lib/app/types/IIterable.d.ts +0 -4
  158. package/lib/app/types/IIterable.js +0 -3
  159. package/lib/app/types/IIterator.d.ts +0 -14
  160. package/lib/app/types/IIterator.js +0 -3
  161. package/lib/app/types/IKeyValueStorage.d.ts +0 -8
  162. package/lib/app/types/IKeyValueStorage.js +0 -3
  163. package/lib/app/types/ILinearStorage.d.ts +0 -11
  164. package/lib/app/types/ILinearStorage.js +0 -3
  165. package/lib/app/types/ILinearStorageRA.d.ts +0 -13
  166. package/lib/app/types/ILinearStorageRA.js +0 -3
  167. package/lib/app/types/ILinkedList.d.ts +0 -4
  168. package/lib/app/types/ILinkedList.js +0 -3
  169. package/lib/app/types/TypeArrayMatrix.d.ts +0 -1
  170. package/lib/app/types/TypeArrayMatrix.js +0 -3
  171. package/lib/app/utils.d.ts +0 -37
  172. package/lib/app/utils.js +0 -115
  173. package/lib/exports/algorithms.d.ts +0 -16
  174. package/lib/exports/algorithms.js +0 -36
  175. package/lib/exports/constants.d.ts +0 -2
  176. package/lib/exports/constants.js +0 -7
  177. package/lib/exports/data-structures.d.ts +0 -13
  178. package/lib/exports/data-structures.js +0 -28
  179. package/lib/exports/helpers.d.ts +0 -6
  180. package/lib/exports/helpers.js +0 -14
  181. package/lib/exports/sorts.d.ts +0 -6
  182. package/lib/exports/sorts.js +0 -14
  183. package/lib/exports/types.d.ts +0 -16
  184. package/lib/exports/types.js +0 -34
  185. package/lib/exports/utils.d.ts +0 -3
  186. package/lib/exports/utils.js +0 -14
  187. package/lib/exports.d.ts +0 -55
  188. package/lib/exports.js +0 -109
  189. package/lib/index.js +0 -5
@@ -1,42 +0,0 @@
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=
@@ -1,4 +0,0 @@
1
- import IGraph from "../../../types/IGraph";
2
- import { EnumGraphType } from "../../../types/EnumGraphType";
3
- import { EnumRandomGenerationFormat } from "../../../types/EnumRandomGenerationFormat";
4
- export declare const generateRandomGraph: (verticesCount: number, edgesCount: number, type?: EnumGraphType, format?: EnumRandomGenerationFormat) => IGraph<string>;
@@ -1,67 +0,0 @@
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
@@ -1,73 +0,0 @@
1
- import IKeyValueStorage from "../../types/IKeyValueStorage";
2
- /**
3
- * Implementation of open addressing hash table using quadratic probing
4
- */
5
- export default class HashTable<T> implements IKeyValueStorage<T> {
6
- /**
7
- Constants
8
- */
9
- private static DEFAULT_MAX_CAPACITY;
10
- private static MAX_LOAD_FACTOR;
11
- /**
12
- * State
13
- */
14
- private storage;
15
- private maxCapacity;
16
- private storageCapacity;
17
- /**
18
- * Given init capacity size will be used
19
- * @throws {ValueOutOfRangeException} when initial capacity value is not larger than 0
20
- */
21
- constructor(initialCapacity?: number);
22
- /**
23
- * Main-hash function
24
- */
25
- private hashFn;
26
- /**
27
- * Helper-hash function
28
- */
29
- private innerHashFn;
30
- /**
31
- * Max capacity will be increased and storage will be overwritten
32
- */
33
- private resizeStorage;
34
- /**
35
- * Will find node instance by its key
36
- * @throws {IsNotFoundException} when element does not exist
37
- */
38
- private findNode;
39
- /**
40
- * Will create new node instance and set in to storage by index
41
- */
42
- private addNode;
43
- /**
44
- * Will create new node instance and set in to storage by index
45
- */
46
- private updateNode;
47
- /**
48
- * Will insert item to hash table
49
- */
50
- set(key: string, data: T): void;
51
- /**
52
- * Will update item property isDeleted to false
53
- * @throws {IsNotFoundException} when element does not exist
54
- */
55
- delete(key: string): void;
56
- /**
57
- * Will find item in hash table
58
- * @throws {IsNotFoundException} when element does not exist
59
- */
60
- get(key: string): T;
61
- /**
62
- * Check if node with given key exists
63
- */
64
- has(key: string): boolean;
65
- /**
66
- * Added elements count
67
- */
68
- length(): number;
69
- /**
70
- * Will overwrite storage with array of null elements
71
- */
72
- clear(): void;
73
- }
@@ -1,171 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFzaFRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLXN0cnVjdHVyZXMvSGFzaFRhYmxlL0hhc2hUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLGlEQUE0QztBQUM1QyxzRkFBaUY7QUFDakYsNEVBQXVFO0FBRXZFOztHQUVHO0FBQ0g7SUFjRTs7O09BR0c7SUFDSCxtQkFBbUIsZUFBd0Q7UUFBeEQsZ0NBQUEsRUFBQSxrQkFBMEIsU0FBUyxDQUFDLG9CQUFvQjtRQU5uRSxvQkFBZSxHQUFHLENBQUMsQ0FBQztRQU8xQixJQUFJLGVBQWUsSUFBSSxDQUFDLEVBQUU7WUFDeEIsTUFBTSxJQUFJLGtDQUF3QixDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDbEU7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssMEJBQU0sR0FBZCxVQUFlLEdBQVcsRUFBRSxNQUFjO1FBQ3hDLE9BQU8sQ0FDTCxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUM5RCxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssK0JBQVcsR0FBbkIsVUFBb0IsR0FBVztRQUM3QixJQUFNLE1BQU0sR0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBRWxDLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoQixPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsSUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9DLElBQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7T0FFRztJQUNLLGlDQUFhLEdBQXJCO1FBQ0UsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7UUFFdEIsSUFBTSxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUMsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoQyxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7Z0JBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUN6QyxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBRTdDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRTt3QkFDOUIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQzt3QkFFN0IsTUFBTTtxQkFDUDtpQkFDRjthQUNGO1NBQ0Y7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssNEJBQVEsR0FBaEIsVUFBaUIsR0FBVztRQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6QyxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWpDLElBQUksQ0FBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsR0FBRyxNQUFLLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsU0FBUyxFQUFFO29CQUNuQixNQUFNO2lCQUNQO2dCQUNELE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE1BQU0sSUFBSSw2QkFBbUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7T0FFRztJQUNLLDJCQUFPLEdBQWYsVUFBZ0IsR0FBVyxFQUFFLElBQU8sRUFBRSxLQUFhO1FBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSx1QkFBYSxDQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRTNELElBQUksVUFBVSxJQUFJLFNBQVMsQ0FBQyxlQUFlLEVBQUU7WUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyw4QkFBVSxHQUFsQixVQUFtQixJQUFPLEVBQUUsS0FBYTtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNJLHVCQUFHLEdBQVYsVUFBVyxHQUFXLEVBQUUsSUFBTztRQUM3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6QyxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWpDLElBQU0sYUFBYSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUM7WUFDcEMsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDL0IsTUFBTTthQUNQO1lBRUQsSUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQztZQUMxQyxJQUFJLGdCQUFnQixFQUFFO2dCQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDN0IsTUFBTTthQUNQO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksMEJBQU0sR0FBYixVQUFjLEdBQVc7UUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekMsSUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFbEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxPQUFPO2FBQ1I7U0FDRjtRQUVELE1BQU0sSUFBSSw2QkFBbUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7O09BR0c7SUFDSSx1QkFBRyxHQUFWLFVBQVcsR0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNJLHVCQUFHLEdBQVYsVUFBVyxHQUFXO1FBQ3BCLElBQUk7WUFDRixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDcEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSwwQkFBTSxHQUFiO1FBQ0UsSUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBQyxJQUFJO1lBQzNDLE9BQU8sSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0kseUJBQUssR0FBWjtRQUNFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFqTUQ7O09BRUc7SUFDWSw4QkFBb0IsR0FBRyxHQUFHLENBQUM7SUFDM0IseUJBQWUsR0FBRyxJQUFJLENBQUM7SUE4THhDLGdCQUFDO0NBQUEsQUFuTUQsSUFtTUM7a0JBbk1vQixTQUFTIn0=
@@ -1,11 +0,0 @@
1
- export default class HashTableNode<T> {
2
- private readonly _key;
3
- private _data;
4
- private _isDeleted;
5
- constructor(key: string, data: T);
6
- get data(): T;
7
- set data(value: T);
8
- get key(): string;
9
- get isDeleted(): boolean;
10
- set isDeleted(value: boolean);
11
- }
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var HashTableNode = /** @class */ (function () {
4
- function HashTableNode(key, data) {
5
- this._key = key;
6
- this._data = data;
7
- this._isDeleted = false;
8
- }
9
- Object.defineProperty(HashTableNode.prototype, "data", {
10
- get: function () {
11
- return this._data;
12
- },
13
- set: function (value) {
14
- this._data = value;
15
- },
16
- enumerable: false,
17
- configurable: true
18
- });
19
- Object.defineProperty(HashTableNode.prototype, "key", {
20
- get: function () {
21
- return this._key;
22
- },
23
- enumerable: false,
24
- configurable: true
25
- });
26
- Object.defineProperty(HashTableNode.prototype, "isDeleted", {
27
- get: function () {
28
- return this._isDeleted;
29
- },
30
- set: function (value) {
31
- this._isDeleted = value;
32
- },
33
- enumerable: false,
34
- configurable: true
35
- });
36
- return HashTableNode;
37
- }());
38
- exports.default = HashTableNode;
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFzaFRhYmxlTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1zdHJ1Y3R1cmVzL0hhc2hUYWJsZS9IYXNoVGFibGVOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7SUFLRSx1QkFBbUIsR0FBVyxFQUFFLElBQU87UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELHNCQUFJLCtCQUFJO2FBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQzthQUVELFVBQVMsS0FBUTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7OztPQUpBO0lBTUQsc0JBQUksOEJBQUc7YUFBUDtZQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLG9DQUFTO2FBQWI7WUFDRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekIsQ0FBQzthQUVELFVBQWMsS0FBYztZQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDOzs7T0FKQTtJQUtILG9CQUFDO0FBQUQsQ0FBQyxBQTlCRCxJQThCQyJ9
@@ -1,134 +0,0 @@
1
- import AbstractLinkedNode from "./AbstractLinkedNode";
2
- import ILinkedList from "../../../types/ILinkedList";
3
- export default abstract class AbstractLinkedList<T> implements ILinkedList<T> {
4
- protected readonly _capacity: number;
5
- protected _length: number;
6
- protected _head: AbstractLinkedNode<T> | null;
7
- protected _tail: AbstractLinkedNode<T> | null;
8
- /**
9
- * Create empty instance
10
- */
11
- protected constructor(capacity?: number);
12
- /**
13
- * Will calculate real capacity value
14
- * @throws {ValueOutOfRangeException} when capacity is out of range
15
- */
16
- private static calculateCapacity;
17
- /**
18
- * Will insert node between nodeLeft and nodeRight
19
- * @throws {CollectionIsFullException} when list is full
20
- */
21
- private insertNodeBetweenTwoNodes;
22
- /**
23
- * Will remove the node from its neighbors nodes links
24
- * @throws {CollectionIsEmptyException} when list is empty
25
- */
26
- private deleteNode;
27
- /**
28
- * Will find node by its index
29
- * @throws {CollectionIsEmptyException} when list is empty
30
- * @throws {IndexOutOfBoundsException} when given index is out of range
31
- */
32
- protected getNodeByIndex(index: number): AbstractLinkedNode<T>;
33
- /**
34
- * Will set links between target, left and right siblings
35
- */
36
- protected abstract insertNodeBetweenTwoNodesImpl(nodeToPush: AbstractLinkedNode<T>, nodeLeft: AbstractLinkedNode<T>, nodeRight: AbstractLinkedNode<T>): void;
37
- /**
38
- * Will unset itself links and its neighbors links
39
- */
40
- protected abstract deleteNodeImpl(node: AbstractLinkedNode<T>): void;
41
- /**
42
- * Update head link
43
- */
44
- protected abstract popImpl(): void;
45
- /**
46
- * Update tail link
47
- */
48
- protected abstract shiftImpl(): void;
49
- /**
50
- * Will create empty node instance
51
- */
52
- protected abstract createNode(value: T): AbstractLinkedNode<T>;
53
- /**
54
- * Push into start
55
- * @throws {CollectionIsFullException} when there is no space available
56
- */
57
- unshift(value: T): void;
58
- /**
59
- * Push into end
60
- * @throws {CollectionIsFullException} when there is no space available
61
- */
62
- push(value: T): void;
63
- /**
64
- * Push from index
65
- * @throws {IndexOutOfBoundsException} when given index is out of range
66
- * @throws {CollectionIsFullException} when there is no space available
67
- */
68
- pushFromIndex(value: T, fromIndex: number): void;
69
- /**
70
- * Delete node from list's end
71
- * @throws {CollectionIsEmptyException} when list is empty
72
- */
73
- pop(): T;
74
- /**
75
- * Delete node from list's start and get its data
76
- * @throws {CollectionIsEmptyException} when list is empty
77
- */
78
- shift(): T;
79
- /**
80
- * Delete node from list by index from start
81
- * @throws {CollectionIsEmptyException} when list is empty
82
- */
83
- deleteFromIndex(fromIndex: number): T;
84
- /**
85
- * List length
86
- */
87
- length(): number;
88
- /**
89
- * Is list empty
90
- */
91
- isEmpty(): boolean;
92
- /**
93
- * Is list full
94
- */
95
- isFull(): boolean;
96
- /**
97
- * Check if element exists in list
98
- */
99
- has(item: T): boolean;
100
- /**
101
- * Get head element data
102
- * @throws {CollectionIsEmptyException} when head does not exist
103
- */
104
- peek(): T;
105
- /**
106
- * Get tail element data
107
- * @throws {CollectionIsEmptyException} when tail does not exists
108
- */
109
- peekFromStart(): T;
110
- /**
111
- * Get list element by index from start
112
- * @throws {CollectionIsEmptyException} when list is empty
113
- * @throws {IndexOutOfBoundsException} when given index is out of range
114
- */
115
- peekByIndex(index: number): T;
116
- /**
117
- * Remove all elements from list
118
- */
119
- clear(): void;
120
- /**
121
- * Get elements as an array
122
- */
123
- getAsArray(): Array<T>;
124
- /**
125
- * Add elements to list from array
126
- * @throws {CollectionIsFullException} when list is full
127
- * */
128
- pushFromArray(elements: Array<T>): void;
129
- /**
130
- * Reverse list nodes links and swap head with tail
131
- * @example "4>7>10" will be reversed to "10>7>4"
132
- */
133
- abstract reverse(): void;
134
- }