@raikuxq/alg-ds 1.1.5 → 1.2.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 (209) hide show
  1. package/README.md +67 -92
  2. package/lib/{algorithms → app/algorithms}/binary-search.d.ts +0 -0
  3. package/lib/app/algorithms/binary-search.js +27 -0
  4. package/lib/{algorithms → app/algorithms}/factorial.d.ts +0 -0
  5. package/lib/{algorithms → app/algorithms}/factorial.js +1 -1
  6. package/lib/{algorithms → app/algorithms}/fibonacci.d.ts +0 -0
  7. package/lib/app/algorithms/fibonacci.js +17 -0
  8. package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/AbstractGraphIterator.d.ts +0 -0
  9. package/lib/app/algorithms/graph/iterator/AbstractGraphIterator.js +83 -0
  10. package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/GraphIteratorBFS.d.ts +0 -0
  11. package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/GraphIteratorBFS.js +2 -2
  12. package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/GraphIteratorDFS.d.ts +0 -0
  13. package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/GraphIteratorDFS.js +2 -2
  14. package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/GraphIteratorDijkstra.d.ts +0 -0
  15. package/lib/{data-structures/Graph → app/algorithms/graph}/iterator/GraphIteratorDijkstra.js +3 -5
  16. package/lib/{data-structures/Graph/strategy → app/algorithms/graph/iterator-strategy}/BFSIterationStrategy.d.ts +0 -0
  17. package/lib/{data-structures/Graph/strategy → app/algorithms/graph/iterator-strategy}/BFSIterationStrategy.js +1 -1
  18. package/lib/{data-structures/Graph/strategy → app/algorithms/graph/iterator-strategy}/DFSIterationStrategy.d.ts +0 -0
  19. package/lib/{data-structures/Graph/strategy → app/algorithms/graph/iterator-strategy}/DFSIterationStrategy.js +1 -1
  20. package/lib/{data-structures/Graph/strategy → app/algorithms/graph/iterator-strategy}/DijkstraIterationStrategy.d.ts +0 -0
  21. package/lib/{data-structures/Graph/strategy → app/algorithms/graph/iterator-strategy}/DijkstraIterationStrategy.js +1 -1
  22. package/lib/{data-structures/Graph → app/algorithms/graph}/presenter/presenterAdjacencyLists.d.ts +0 -0
  23. package/lib/{data-structures/Graph → app/algorithms/graph}/presenter/presenterAdjacencyLists.js +1 -1
  24. package/lib/{data-structures/Graph → app/algorithms/graph}/presenter/presenterAdjacencyMatrix.d.ts +2 -2
  25. package/lib/{data-structures/Graph → app/algorithms/graph}/presenter/presenterAdjacencyMatrix.js +1 -1
  26. package/lib/{data-structures/Graph → app/algorithms/graph}/searching/hasPath.d.ts +0 -0
  27. package/lib/app/algorithms/graph/searching/hasPath.js +30 -0
  28. package/lib/{data-structures/Graph → app/algorithms/graph}/searching/shortestPath.d.ts +0 -0
  29. package/lib/app/algorithms/graph/searching/shortestPath.js +30 -0
  30. package/lib/{data-structures/Graph → app/algorithms/graph}/transposing/transposeDirectedGraph.d.ts +0 -0
  31. package/lib/{data-structures/Graph → app/algorithms/graph}/transposing/transposeDirectedGraph.js +3 -3
  32. package/lib/{algorithms → app/algorithms}/memoize.d.ts +0 -0
  33. package/lib/{algorithms → app/algorithms}/memoize.js +1 -1
  34. package/lib/{algorithms → app/algorithms}/sorts/bubble-sort.d.ts +0 -0
  35. package/lib/{algorithms → app/algorithms}/sorts/bubble-sort.js +1 -1
  36. package/lib/{algorithms → app/algorithms}/sorts/insertion-sort.d.ts +0 -0
  37. package/lib/app/algorithms/sorts/insertion-sort.js +25 -0
  38. package/lib/{algorithms → app/algorithms}/sorts/merge-sort.d.ts +0 -0
  39. package/lib/app/algorithms/sorts/merge-sort.js +61 -0
  40. package/lib/{algorithms → app/algorithms}/sorts/quick-sort.d.ts +0 -0
  41. package/lib/{algorithms → app/algorithms}/sorts/quick-sort.js +1 -1
  42. package/lib/{algorithms → app/algorithms}/sorts/select-sort.d.ts +0 -0
  43. package/lib/{algorithms → app/algorithms}/sorts/select-sort.js +1 -1
  44. package/lib/app/algorithms/transpose-matrix.d.ts +5 -0
  45. package/lib/app/algorithms/transpose-matrix.js +18 -0
  46. package/lib/{constants.d.ts → app/constants.d.ts} +0 -0
  47. package/lib/{constants.js → app/constants.js} +1 -1
  48. package/lib/{data-structures → app/data-structures}/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.d.ts +0 -0
  49. package/lib/{data-structures → app/data-structures}/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.js +1 -1
  50. package/lib/{data-structures → app/data-structures}/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.d.ts +0 -0
  51. package/lib/{data-structures → app/data-structures}/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.js +1 -1
  52. package/lib/{data-structures → app/data-structures}/BinaryTree/BinarySearchTree/BinarySearchNode.d.ts +0 -0
  53. package/lib/{data-structures → app/data-structures}/BinaryTree/BinarySearchTree/BinarySearchNode.js +1 -1
  54. package/lib/{data-structures → app/data-structures}/BinaryTree/BinarySearchTree/BinarySearchTree.d.ts +0 -0
  55. package/lib/{data-structures → app/data-structures}/BinaryTree/BinarySearchTree/BinarySearchTree.js +7 -4
  56. package/lib/{data-structures → app/data-structures}/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.d.ts +0 -0
  57. package/lib/{data-structures → app/data-structures}/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.js +1 -1
  58. package/lib/{data-structures → app/data-structures}/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.d.ts +0 -0
  59. package/lib/{data-structures → app/data-structures}/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.js +3 -2
  60. package/lib/app/data-structures/BinaryTree/_helpers/createBinaryTree.d.ts +6 -0
  61. package/lib/app/data-structures/BinaryTree/_helpers/createBinaryTree.js +22 -0
  62. package/lib/{data-structures → app/data-structures}/Graph/AbstractGraph.d.ts +0 -0
  63. package/lib/app/data-structures/Graph/AbstractGraph.js +143 -0
  64. package/lib/{data-structures → app/data-structures}/Graph/DirectedGraph.d.ts +0 -0
  65. package/lib/{data-structures → app/data-structures}/Graph/DirectedGraph.js +5 -4
  66. package/lib/{data-structures → app/data-structures}/Graph/GraphEdge.d.ts +0 -0
  67. package/lib/{data-structures → app/data-structures}/Graph/GraphEdge.js +1 -1
  68. package/lib/{data-structures → app/data-structures}/Graph/UndirectedGraph.d.ts +0 -0
  69. package/lib/app/data-structures/Graph/UndirectedGraph.js +103 -0
  70. package/lib/app/data-structures/Graph/_helpers/createGraph.d.ts +6 -0
  71. package/lib/app/data-structures/Graph/_helpers/createGraph.js +22 -0
  72. package/lib/app/data-structures/Graph/_helpers/createGraphFromMatrix.d.ts +7 -0
  73. package/lib/app/data-structures/Graph/_helpers/createGraphFromMatrix.js +42 -0
  74. package/lib/{data-structures/Graph/demo → app/data-structures/Graph/_helpers}/generateRandomGraph.d.ts +0 -0
  75. package/lib/app/data-structures/Graph/_helpers/generateRandomGraph.js +67 -0
  76. package/lib/{data-structures → app/data-structures}/HashTable/HashTable.d.ts +0 -0
  77. package/lib/app/data-structures/HashTable/HashTable.js +171 -0
  78. package/lib/{data-structures → app/data-structures}/HashTable/HashTableNode.d.ts +0 -0
  79. package/lib/{data-structures → app/data-structures}/HashTable/HashTableNode.js +1 -1
  80. package/lib/{data-structures → app/data-structures}/LinkedList/AbstractLinkedList/AbstractLinkedList.d.ts +2 -2
  81. package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.js +241 -0
  82. package/lib/{data-structures → app/data-structures}/LinkedList/AbstractLinkedList/AbstractLinkedNode.d.ts +0 -0
  83. package/lib/{data-structures → app/data-structures}/LinkedList/AbstractLinkedList/AbstractLinkedNode.js +1 -1
  84. package/lib/{data-structures → app/data-structures}/LinkedList/DoubleLinkedList/DoubleLinkedList.d.ts +0 -0
  85. package/lib/{data-structures → app/data-structures}/LinkedList/DoubleLinkedList/DoubleLinkedList.js +4 -3
  86. package/lib/{data-structures → app/data-structures}/LinkedList/DoubleLinkedList/DoubleLinkedNode.d.ts +0 -0
  87. package/lib/{data-structures → app/data-structures}/LinkedList/DoubleLinkedList/DoubleLinkedNode.js +1 -1
  88. package/lib/{data-structures → app/data-structures}/LinkedList/SingleLinkedList/SingleLinkedList.d.ts +0 -0
  89. package/lib/{data-structures → app/data-structures}/LinkedList/SingleLinkedList/SingleLinkedList.js +3 -2
  90. package/lib/{data-structures → app/data-structures}/LinkedList/SingleLinkedList/SingleLinkedNode.d.ts +0 -0
  91. package/lib/{data-structures → app/data-structures}/LinkedList/SingleLinkedList/SingleLinkedNode.js +1 -1
  92. package/lib/app/data-structures/LinkedList/_helpers/createLinkedList.d.ts +3 -0
  93. package/lib/app/data-structures/LinkedList/_helpers/createLinkedList.js +19 -0
  94. package/lib/{data-structures → app/data-structures}/LoopedArray/LoopedArray.d.ts +0 -3
  95. package/lib/{data-structures → app/data-structures}/LoopedArray/LoopedArray.js +17 -9
  96. package/lib/{data-structures → app/data-structures}/Queue/Queue.d.ts +0 -0
  97. package/lib/app/data-structures/Queue/Queue.js +85 -0
  98. package/lib/{data-structures → app/data-structures}/Stack/Stack.d.ts +0 -0
  99. package/lib/app/data-structures/Stack/Stack.js +85 -0
  100. package/lib/app/exceptions/CollectionIsEmptyException.d.ts +4 -0
  101. package/lib/app/exceptions/CollectionIsEmptyException.js +28 -0
  102. package/lib/app/exceptions/CollectionIsFullException.d.ts +4 -0
  103. package/lib/app/exceptions/CollectionIsFullException.js +28 -0
  104. package/lib/app/exceptions/IndexOutOfBoundsException.d.ts +4 -0
  105. package/lib/app/exceptions/IndexOutOfBoundsException.js +28 -0
  106. package/lib/app/exceptions/IsAlreadyExistsException.d.ts +4 -0
  107. package/lib/app/exceptions/IsAlreadyExistsException.js +28 -0
  108. package/lib/app/exceptions/IsNotFoundException.d.ts +4 -0
  109. package/lib/app/exceptions/IsNotFoundException.js +28 -0
  110. package/lib/app/exceptions/ValueOutOfRangeException.d.ts +4 -0
  111. package/lib/app/exceptions/ValueOutOfRangeException.js +28 -0
  112. package/lib/app/exceptions/base/IllegalArgumentException.d.ts +3 -0
  113. package/lib/app/exceptions/base/IllegalArgumentException.js +27 -0
  114. package/lib/app/exceptions/base/IllegalStateException.d.ts +3 -0
  115. package/lib/app/exceptions/base/IllegalStateException.js +27 -0
  116. package/lib/{types → app/types}/EnumBinarySearchTreeType.d.ts +0 -0
  117. package/lib/{types → app/types}/EnumBinarySearchTreeType.js +1 -1
  118. package/lib/app/types/EnumGraphTraversalType.d.ts +5 -0
  119. package/lib/app/types/EnumGraphTraversalType.js +10 -0
  120. package/lib/{types → app/types}/EnumGraphType.d.ts +0 -0
  121. package/lib/{types → app/types}/EnumGraphType.js +1 -1
  122. package/lib/{types → app/types}/EnumLinkedListType.d.ts +0 -0
  123. package/lib/{types → app/types}/EnumLinkedListType.js +1 -1
  124. package/lib/{types → app/types}/EnumRandomGenerationFormat.d.ts +0 -0
  125. package/lib/{types → app/types}/EnumRandomGenerationFormat.js +1 -1
  126. package/lib/app/types/EnumSortType.d.ts +7 -0
  127. package/lib/app/types/EnumSortType.js +12 -0
  128. package/lib/{types → app/types}/EnumTreeTraversalType.d.ts +0 -0
  129. package/lib/{types → app/types}/EnumTreeTraversalType.js +1 -1
  130. package/lib/{types → app/types}/FnCompareTwo.d.ts +0 -0
  131. package/lib/{types → app/types}/FnCompareTwo.js +1 -1
  132. package/lib/{types → app/types}/FnToMemoize.d.ts +0 -0
  133. package/lib/{types → app/types}/FnToMemoize.js +1 -1
  134. package/lib/{types → app/types}/IArrayFacade.d.ts +0 -0
  135. package/lib/{types → app/types}/IArrayFacade.js +1 -1
  136. package/lib/{types → app/types}/IBiDirectIterable.d.ts +0 -0
  137. package/lib/{types → app/types}/IBiDirectIterable.js +1 -1
  138. package/lib/{types → app/types}/IBiDirectIterator.d.ts +0 -0
  139. package/lib/{types → app/types}/IBiDirectIterator.js +1 -1
  140. package/lib/{types → app/types}/IBinaryTree.d.ts +0 -0
  141. package/lib/{types → app/types}/IBinaryTree.js +1 -1
  142. package/lib/{types → app/types}/IConvertableToArray.d.ts +0 -0
  143. package/lib/{types → app/types}/IConvertableToArray.js +1 -1
  144. package/lib/{types → app/types}/IGraph.d.ts +0 -0
  145. package/lib/{types → app/types}/IGraph.js +1 -1
  146. package/lib/{types → app/types}/IGraphIterationStrategy.d.ts +0 -0
  147. package/lib/{types → app/types}/IGraphIterationStrategy.js +1 -1
  148. package/lib/{types → app/types}/IGraphIterator.d.ts +0 -0
  149. package/lib/{types → app/types}/IGraphIterator.js +1 -1
  150. package/lib/{types → app/types}/IIterable.d.ts +0 -0
  151. package/lib/{types → app/types}/IIterable.js +1 -1
  152. package/lib/{types → app/types}/IIterator.d.ts +0 -0
  153. package/lib/{types → app/types}/IIterator.js +1 -1
  154. package/lib/{types → app/types}/IKeyValueStorage.d.ts +0 -0
  155. package/lib/{types → app/types}/IKeyValueStorage.js +1 -1
  156. package/lib/{types → app/types}/ILinearStorage.d.ts +0 -0
  157. package/lib/{types → app/types}/ILinearStorage.js +1 -1
  158. package/lib/{types → app/types}/ILinearStorageRA.d.ts +0 -0
  159. package/lib/{types → app/types}/ILinearStorageRA.js +1 -1
  160. package/lib/{types → app/types}/ILinkedList.d.ts +0 -0
  161. package/lib/{types → app/types}/ILinkedList.js +1 -1
  162. package/lib/app/types/TypeArrayMatrix.d.ts +1 -0
  163. package/lib/app/types/TypeArrayMatrix.js +3 -0
  164. package/lib/{utils.d.ts → app/utils.d.ts} +8 -0
  165. package/lib/{utils.js → app/utils.js} +21 -2
  166. package/lib/exports/algorithms.d.ts +15 -15
  167. package/lib/exports/algorithms.js +16 -16
  168. package/lib/exports/constants.d.ts +1 -1
  169. package/lib/exports/constants.js +2 -2
  170. package/lib/exports/data-structures.d.ts +10 -10
  171. package/lib/exports/data-structures.js +11 -11
  172. package/lib/exports/helpers.d.ts +5 -5
  173. package/lib/exports/helpers.js +6 -6
  174. package/lib/exports/sorts.d.ts +5 -5
  175. package/lib/exports/sorts.js +6 -6
  176. package/lib/exports/types.d.ts +16 -0
  177. package/lib/exports/types.js +34 -0
  178. package/lib/exports/utils.d.ts +2 -2
  179. package/lib/exports/utils.js +3 -3
  180. package/lib/exports.d.ts +47 -38
  181. package/lib/exports.js +56 -40
  182. package/lib/index.js +1 -2
  183. package/package.json +11 -6
  184. package/lib/algorithms/binary-search.js +0 -27
  185. package/lib/algorithms/fibonacci.js +0 -17
  186. package/lib/algorithms/sorts/insertion-sort.js +0 -25
  187. package/lib/algorithms/sorts/merge-sort.js +0 -61
  188. package/lib/algorithms/transpose-matrix.d.ts +0 -5
  189. package/lib/algorithms/transpose-matrix.js +0 -20
  190. package/lib/data-structures/Graph/AbstractGraph.js +0 -141
  191. package/lib/data-structures/Graph/UndirectedGraph.js +0 -102
  192. package/lib/data-structures/Graph/demo/generateRandomGraph.js +0 -72
  193. package/lib/data-structures/Graph/iterator/AbstractGraphIterator.js +0 -90
  194. package/lib/data-structures/Graph/searching/hasPath.js +0 -29
  195. package/lib/data-structures/Graph/searching/shortestPath.js +0 -29
  196. package/lib/data-structures/HashTable/HashTable.js +0 -169
  197. package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.js +0 -236
  198. package/lib/data-structures/Queue/Queue.js +0 -83
  199. package/lib/data-structures/Stack/Stack.js +0 -83
  200. package/lib/helpers/createBinaryTree.d.ts +0 -6
  201. package/lib/helpers/createBinaryTree.js +0 -22
  202. package/lib/helpers/createGraph.d.ts +0 -6
  203. package/lib/helpers/createGraph.js +0 -24
  204. package/lib/helpers/createGraphFromMatrix.d.ts +0 -7
  205. package/lib/helpers/createGraphFromMatrix.js +0 -37
  206. package/lib/helpers/createLinkedList.d.ts +0 -3
  207. package/lib/helpers/createLinkedList.js +0 -21
  208. package/lib/types/ArrayMatrix.d.ts +0 -1
  209. package/lib/types/ArrayMatrix.js +0 -3
@@ -1,236 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var AbstractLinkedList = /** @class */ (function () {
4
- /**
5
- * Create empty instance
6
- */
7
- function AbstractLinkedList(capacity) {
8
- this._capacity = AbstractLinkedList.calculateCapacity(capacity);
9
- this._head = null;
10
- this._tail = null;
11
- this._length = 0;
12
- }
13
- /**
14
- * Will calculate real capacity value
15
- * @throws when capacity <= 0
16
- */
17
- AbstractLinkedList.calculateCapacity = function (capacity) {
18
- if (capacity === undefined) {
19
- return Number.MAX_VALUE;
20
- }
21
- if (capacity <= 0) {
22
- throw new Error("Capacity must be larger than 0");
23
- }
24
- return capacity;
25
- };
26
- /**
27
- * Will insert node between nodeLeft and nodeRight
28
- * @throws when list is full
29
- */
30
- AbstractLinkedList.prototype.insertNodeBetweenTwoNodes = function (targetNode, leftNode, rightNode) {
31
- if (this.isFull()) {
32
- throw new Error("List is full, no more space available");
33
- }
34
- if (this._head === null) {
35
- this._head = targetNode;
36
- }
37
- if (this._tail === null) {
38
- this._tail = targetNode;
39
- }
40
- if (!leftNode) {
41
- leftNode = this._tail;
42
- }
43
- if (!rightNode) {
44
- rightNode = this._head;
45
- }
46
- this.insertNodeBetweenTwoNodesImpl(targetNode, leftNode, rightNode);
47
- this._length++;
48
- };
49
- /**
50
- * Will remove the node from its neighbors nodes links
51
- * @throws when node does not exist
52
- */
53
- AbstractLinkedList.prototype.deleteNode = function (node) {
54
- if (node === null) {
55
- throw new Error("Node should be existed");
56
- }
57
- this.deleteNodeImpl(node);
58
- this._length--;
59
- if (this.isEmpty()) {
60
- this.clear();
61
- }
62
- return node;
63
- };
64
- /**
65
- * Will find node by its index
66
- * @throws when node was not found
67
- */
68
- AbstractLinkedList.prototype.getNodeByIndex = function (index) {
69
- if (this.isEmpty()) {
70
- throw new Error("List is empty");
71
- }
72
- if (this._length < index) {
73
- throw new Error("Index exceed list length");
74
- }
75
- var currentNode = this._tail;
76
- var counter = 0;
77
- while (currentNode && counter < index) {
78
- currentNode = currentNode.next;
79
- counter++;
80
- }
81
- if (currentNode === null) {
82
- throw new Error("Node does not exist");
83
- }
84
- return currentNode;
85
- };
86
- /**
87
- * Push into start
88
- */
89
- AbstractLinkedList.prototype.unshift = function (value) {
90
- var node = this.createNode(value);
91
- this.insertNodeBetweenTwoNodes(node, this._head, this._tail);
92
- this._tail = node;
93
- };
94
- /**
95
- * Push into end
96
- */
97
- AbstractLinkedList.prototype.push = function (value) {
98
- var node = this.createNode(value);
99
- this.insertNodeBetweenTwoNodes(node, this._head, this._tail);
100
- this._head = node;
101
- };
102
- /**
103
- * Push from index
104
- */
105
- AbstractLinkedList.prototype.pushFromIndex = function (value, fromIndex) {
106
- var isIndexNotInRange = fromIndex < 0 || fromIndex > this._length;
107
- var shouldPushAsFirst = this.isEmpty() && fromIndex === 0;
108
- if (isIndexNotInRange) {
109
- throw new Error("index must be in range between 0 and list length");
110
- }
111
- if (shouldPushAsFirst) {
112
- this.push(value);
113
- }
114
- else {
115
- var node = this.createNode(value);
116
- var nodeLeft = this.getNodeByIndex(fromIndex - 1);
117
- var nodeRight = this.getNodeByIndex(fromIndex);
118
- this.insertNodeBetweenTwoNodes(node, nodeLeft, nodeRight);
119
- }
120
- };
121
- /**
122
- * Delete node from list's end
123
- */
124
- AbstractLinkedList.prototype.pop = function () {
125
- var deletedNode = this.deleteNode(this._head);
126
- this.popImpl();
127
- return deletedNode.data;
128
- };
129
- /**
130
- * Delete node from list's start and get its data
131
- */
132
- AbstractLinkedList.prototype.shift = function () {
133
- var deletedNode = this.deleteNode(this._tail);
134
- this.shiftImpl();
135
- return deletedNode.data;
136
- };
137
- /**
138
- * Delete node from list by index from start
139
- */
140
- AbstractLinkedList.prototype.deleteFromIndex = function (fromIndex) {
141
- var nodeToDelete = this.getNodeByIndex(fromIndex);
142
- var deletedNode = this.deleteNode(nodeToDelete);
143
- return deletedNode.data;
144
- };
145
- /**
146
- * List length
147
- */
148
- AbstractLinkedList.prototype.length = function () {
149
- return this._length;
150
- };
151
- /**
152
- * Is list empty
153
- */
154
- AbstractLinkedList.prototype.isEmpty = function () {
155
- return this._length === 0;
156
- };
157
- /**
158
- * Is list full
159
- */
160
- AbstractLinkedList.prototype.isFull = function () {
161
- return this._length >= this._capacity;
162
- };
163
- /**
164
- * Check if element exists in list
165
- */
166
- AbstractLinkedList.prototype.has = function (item) {
167
- return this.getAsArray().includes(item);
168
- };
169
- /**
170
- * Get head element data
171
- * @throws Error when head does not exist
172
- */
173
- AbstractLinkedList.prototype.peek = function () {
174
- if (!this._head) {
175
- throw new Error("Head does not exist");
176
- }
177
- return this._head.data;
178
- };
179
- /**
180
- * Get tail element data
181
- * @throws Error when tail does not exists
182
- */
183
- AbstractLinkedList.prototype.peekFromStart = function () {
184
- if (!this._tail) {
185
- throw new Error("Tail does not exist");
186
- }
187
- return this._tail.data;
188
- };
189
- /**
190
- * Get list element by index from start
191
- * @throws when element does not exist
192
- */
193
- AbstractLinkedList.prototype.peekByIndex = function (index) {
194
- var node = this.getNodeByIndex(index);
195
- return node.data;
196
- };
197
- /**
198
- * Remove all elements from list
199
- */
200
- AbstractLinkedList.prototype.clear = function () {
201
- this._head = null;
202
- this._tail = null;
203
- this._length = 0;
204
- };
205
- /**
206
- * Get elements as an array
207
- */
208
- AbstractLinkedList.prototype.getAsArray = function () {
209
- var array = [];
210
- var currentNode = this._tail;
211
- var counter = 0;
212
- while (currentNode && counter < this._length) {
213
- if (currentNode)
214
- array.push(currentNode.data);
215
- currentNode = currentNode.next;
216
- counter++;
217
- }
218
- return array;
219
- };
220
- /**
221
- * Add elements to list from array
222
- * @throws when list is full
223
- * */
224
- AbstractLinkedList.prototype.pushFromArray = function (elements) {
225
- var _this = this;
226
- elements.forEach(function (element) {
227
- if (_this.isFull()) {
228
- throw new Error("List is full, no more space available");
229
- }
230
- _this.push(element);
231
- });
232
- };
233
- return AbstractLinkedList;
234
- }());
235
- exports.default = AbstractLinkedList;
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RMaW5rZWRMaXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGEtc3RydWN0dXJlcy9MaW5rZWRMaXN0L0Fic3RyYWN0TGlua2VkTGlzdC9BYnN0cmFjdExpbmtlZExpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQTtJQU1FOztPQUVHO0lBQ0gsNEJBQXNCLFFBQWlCO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNZLG9DQUFpQixHQUFoQyxVQUFpQyxRQUFpQjtRQUNoRCxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDMUIsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRDtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxzREFBeUIsR0FBakMsVUFDRSxVQUFpQyxFQUNqQyxRQUFzQyxFQUN0QyxTQUF1QztRQUV2QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUN2QixJ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
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var DoubleLinkedList_1 = require("../LinkedList/DoubleLinkedList/DoubleLinkedList");
4
- /**
5
- * FIFO data structure
6
- */
7
- var Queue = /** @class */ (function () {
8
- /**
9
- * Create a queue instance
10
- */
11
- function Queue(capacity) {
12
- this._list = new DoubleLinkedList_1.default(capacity);
13
- }
14
- /**
15
- * Get first element in queue (without deleting)
16
- * @throws when list is empty
17
- */
18
- Queue.prototype.peek = function () {
19
- if (this.isEmpty()) {
20
- throw new Error("Cannot peek when list is empty");
21
- }
22
- return this._list.peek();
23
- };
24
- /**
25
- * Add element to queue
26
- * @throws when list is full
27
- */
28
- Queue.prototype.push = function (item) {
29
- if (this._list.isFull()) {
30
- throw new Error("Cannot push when queue is full");
31
- }
32
- this._list.unshift(item);
33
- };
34
- /**
35
- * Delete first element in queue
36
- * @throws when list is empty
37
- */
38
- Queue.prototype.pop = function () {
39
- if (this.isEmpty()) {
40
- throw new Error("Cannot pop when list is empty");
41
- }
42
- return this._list.pop();
43
- };
44
- /**
45
- * Check if element exists in list
46
- */
47
- Queue.prototype.has = function (item) {
48
- return this._list.has(item);
49
- };
50
- /**
51
- * Is queue empty
52
- */
53
- Queue.prototype.isEmpty = function () {
54
- return this._list.isEmpty();
55
- };
56
- /**
57
- * Is stack full
58
- */
59
- Queue.prototype.isFull = function () {
60
- return this._list.isFull();
61
- };
62
- /**
63
- * Remove all elements in queue
64
- */
65
- Queue.prototype.clear = function () {
66
- this._list.clear();
67
- };
68
- /**
69
- * Queue length
70
- */
71
- Queue.prototype.length = function () {
72
- return this._list.length();
73
- };
74
- /**
75
- * Reverse queue
76
- */
77
- Queue.prototype.reverse = function () {
78
- this._list.reverse();
79
- };
80
- return Queue;
81
- }());
82
- exports.default = Queue;
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YS1zdHJ1Y3R1cmVzL1F1ZXVlL1F1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0ZBQStFO0FBSS9FOztHQUVHO0FBQ0g7SUFHRTs7T0FFRztJQUNILGVBQW1CLFFBQWlCO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSwwQkFBZ0IsQ0FBSSxRQUFRLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksb0JBQUksR0FBWDtRQUNFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRDtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksb0JBQUksR0FBWCxVQUFZLElBQU87UUFDakIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxtQkFBRyxHQUFWO1FBQ0UsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLG1CQUFHLEdBQVYsVUFBVyxJQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksdUJBQU8sR0FBZDtRQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxzQkFBTSxHQUFiO1FBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNJLHFCQUFLLEdBQVo7UUFDRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNJLHNCQUFNLEdBQWI7UUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksdUJBQU8sR0FBZDtRQUNFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNILFlBQUM7QUFBRCxDQUFDLEFBcEZELElBb0ZDIn0=
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var DoubleLinkedList_1 = require("../LinkedList/DoubleLinkedList/DoubleLinkedList");
4
- /**
5
- * LIFO data structure
6
- */
7
- var Stack = /** @class */ (function () {
8
- /**
9
- * Create a stack instance
10
- */
11
- function Stack(capacity) {
12
- this._list = new DoubleLinkedList_1.default(capacity);
13
- }
14
- /**
15
- * Get stack top element
16
- * @throws when list is empty
17
- */
18
- Stack.prototype.peek = function () {
19
- if (this.isEmpty()) {
20
- throw new Error("Cannot peek when list is empty");
21
- }
22
- return this._list.peek();
23
- };
24
- /**
25
- * Add element to stack head
26
- * @throws when list is full
27
- */
28
- Stack.prototype.push = function (item) {
29
- if (this.isFull()) {
30
- throw new Error("Stack is full");
31
- }
32
- this._list.push(item);
33
- };
34
- /**
35
- * Remove element from stack head
36
- * @throws when list is empty
37
- */
38
- Stack.prototype.pop = function () {
39
- if (this.isEmpty()) {
40
- throw new Error("Cannot pop when stack is empty");
41
- }
42
- return this._list.pop();
43
- };
44
- /**
45
- * Check if element exists in list
46
- */
47
- Stack.prototype.has = function (item) {
48
- return this._list.has(item);
49
- };
50
- /**
51
- * Is stack empty
52
- */
53
- Stack.prototype.isEmpty = function () {
54
- return this._list.isEmpty();
55
- };
56
- /**
57
- * Is stack full
58
- */
59
- Stack.prototype.isFull = function () {
60
- return this._list.isFull();
61
- };
62
- /**
63
- * Remove all elements in stack
64
- */
65
- Stack.prototype.clear = function () {
66
- this._list.clear();
67
- };
68
- /**
69
- * Queue length
70
- */
71
- Stack.prototype.length = function () {
72
- return this._list.length();
73
- };
74
- /**
75
- * Reverse stack
76
- */
77
- Stack.prototype.reverse = function () {
78
- this._list.reverse();
79
- };
80
- return Stack;
81
- }());
82
- exports.default = Stack;
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YS1zdHJ1Y3R1cmVzL1N0YWNrL1N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0ZBQStFO0FBSS9FOztHQUVHO0FBQ0g7SUFHRTs7T0FFRztJQUNILGVBQW1CLFFBQWlCO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSwwQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksb0JBQUksR0FBWDtRQUNFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRDtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksb0JBQUksR0FBWCxVQUFZLElBQU87UUFDakIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxtQkFBRyxHQUFWO1FBQ0UsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLG1CQUFHLEdBQVYsVUFBVyxJQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksdUJBQU8sR0FBZDtRQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxzQkFBTSxHQUFiO1FBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNJLHFCQUFLLEdBQVo7UUFDRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNJLHNCQUFNLEdBQWI7UUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksdUJBQU8sR0FBZDtRQUNFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNILFlBQUM7QUFBRCxDQUFDLEFBcEZELElBb0ZDIn0=
@@ -1,6 +0,0 @@
1
- import { EnumBinarySearchTreeType } from "../types/EnumBinarySearchTreeType";
2
- import IBinaryTree from "../types/IBinaryTree";
3
- /**
4
- * Returns binary tree by type
5
- */
6
- export declare const createBinaryTree: <T>(type: EnumBinarySearchTreeType) => IBinaryTree<T>;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createBinaryTree = void 0;
4
- var EnumBinarySearchTreeType_1 = require("../types/EnumBinarySearchTreeType");
5
- var BinarySearchTree_1 = require("../data-structures/BinaryTree/BinarySearchTree/BinarySearchTree");
6
- var RandBinarySearchTree_1 = require("../data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree");
7
- /**
8
- * Returns binary tree by type
9
- */
10
- exports.createBinaryTree = function (type) {
11
- var binaryTree;
12
- switch (type) {
13
- case EnumBinarySearchTreeType_1.EnumBinarySearchTreeType.BST:
14
- binaryTree = new BinarySearchTree_1.default();
15
- break;
16
- case EnumBinarySearchTreeType_1.EnumBinarySearchTreeType.RANDOMIZED_BST:
17
- binaryTree = new RandBinarySearchTree_1.default();
18
- break;
19
- }
20
- return binaryTree;
21
- };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQmluYXJ5VHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL2NyZWF0ZUJpbmFyeVRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsOEVBQTZFO0FBQzdFLG9HQUErRjtBQUMvRixnSEFBMkc7QUFHM0c7O0dBRUc7QUFDVSxRQUFBLGdCQUFnQixHQUFHLFVBQzlCLElBQThCO0lBRTlCLElBQUksVUFBMEIsQ0FBQztJQUUvQixRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssbURBQXdCLENBQUMsR0FBRztZQUMvQixVQUFVLEdBQUcsSUFBSSwwQkFBZ0IsRUFBRSxDQUFDO1lBQ3BDLE1BQU07UUFDUixLQUFLLG1EQUF3QixDQUFDLGNBQWM7WUFDMUMsVUFBVSxHQUFHLElBQUksOEJBQW9CLEVBQUUsQ0FBQztZQUN4QyxNQUFNO0tBQ1Q7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUMifQ==
@@ -1,6 +0,0 @@
1
- import IGraph from "../types/IGraph";
2
- import { EnumGraphType } from "../types/EnumGraphType";
3
- /**
4
- * Returns graph by type
5
- */
6
- export declare const createGraph: <T>(type: EnumGraphType) => IGraph<T>;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createGraph = void 0;
4
- var DirectedGraph_1 = require("../data-structures/Graph/DirectedGraph");
5
- var UndirectedGraph_1 = require("../data-structures/Graph/UndirectedGraph");
6
- var EnumGraphType_1 = require("../types/EnumGraphType");
7
- /**
8
- * Returns graph by type
9
- */
10
- exports.createGraph = function (type) {
11
- var graph;
12
- switch (type) {
13
- case EnumGraphType_1.EnumGraphType.Directed:
14
- graph = new DirectedGraph_1.default();
15
- break;
16
- case EnumGraphType_1.EnumGraphType.Undirected:
17
- graph = new UndirectedGraph_1.default();
18
- break;
19
- default:
20
- throw new Error("Invalid graph type");
21
- }
22
- return graph;
23
- };
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlR3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9jcmVhdGVHcmFwaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx3RUFBbUU7QUFDbkUsNEVBQXVFO0FBQ3ZFLHdEQUF1RDtBQUV2RDs7R0FFRztBQUNVLFFBQUEsV0FBVyxHQUFHLFVBQUksSUFBbUI7SUFDaEQsSUFBSSxLQUFnQixDQUFDO0lBRXJCLFFBQVEsSUFBSSxFQUFFO1FBQ1osS0FBSyw2QkFBYSxDQUFDLFFBQVE7WUFDekIsS0FBSyxHQUFHLElBQUksdUJBQWEsRUFBRSxDQUFDO1lBQzVCLE1BQU07UUFDUixLQUFLLDZCQUFhLENBQUMsVUFBVTtZQUMzQixLQUFLLEdBQUcsSUFBSSx5QkFBZSxFQUFFLENBQUM7WUFDOUIsTUFBTTtRQUNSO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBQ3pDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMifQ==
@@ -1,7 +0,0 @@
1
- import IGraph from "../types/IGraph";
2
- import { EnumGraphType } from "../types/EnumGraphType";
3
- import { ArrayMatrix } from "../types/ArrayMatrix";
4
- /**
5
- * Creates a graph from N*N matrix that contains 1 in case of edge exists or 0 in case it does not
6
- */
7
- export declare const createGraphFromMatrix: <T>(matrix: ArrayMatrix, fieldsList: T[], type: EnumGraphType) => IGraph<T>;
@@ -1,37 +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
- /**
8
- * Creates a graph from N*N matrix that contains 1 in case of edge exists or 0 in case it does not
9
- */
10
- exports.createGraphFromMatrix = function (matrix, fieldsList, type) {
11
- var graph = createGraph_1.createGraph(type);
12
- fieldsList.forEach(function (fieldName) {
13
- graph.addVertex(fieldName);
14
- });
15
- matrix.forEach(function (row, rowIndex) {
16
- row.forEach(function (col, colIndex) {
17
- var rowColState = matrix[rowIndex][colIndex];
18
- var colRowState = matrix[colIndex][rowIndex];
19
- if (type === EnumGraphType_1.EnumGraphType.Undirected) {
20
- if (rowColState === constants_1.EDGE_EXISTS_STATE &&
21
- colRowState === constants_1.EDGE_EXISTS_STATE) {
22
- graph.addEdge(fieldsList[rowIndex], fieldsList[colIndex]);
23
- }
24
- }
25
- if (type === EnumGraphType_1.EnumGraphType.Directed) {
26
- if (rowColState === constants_1.EDGE_EXISTS_STATE) {
27
- graph.addEdge(fieldsList[rowIndex], fieldsList[colIndex]);
28
- }
29
- if (colRowState === constants_1.EDGE_EXISTS_STATE) {
30
- graph.addEdge(fieldsList[colIndex], fieldsList[rowIndex]);
31
- }
32
- }
33
- });
34
- });
35
- return graph;
36
- };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlR3JhcGhGcm9tTWF0cml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlcnMvY3JlYXRlR3JhcGhGcm9tTWF0cml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHdEQUF1RDtBQUV2RCw2Q0FBNEM7QUFDNUMsMENBQWlEO0FBRWpEOztHQUVHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxVQUNuQyxNQUFtQixFQUNuQixVQUFvQixFQUNwQixJQUFtQjtJQUVuQixJQUFNLEtBQUssR0FBYyx5QkFBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTNDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBQyxTQUFTO1FBQzNCLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUMsR0FBa0IsRUFBRSxRQUFnQjtRQUNsRCxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQUMsR0FBVyxFQUFFLFFBQWdCO1lBQ3hDLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQyxJQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFL0MsSUFBSSxJQUFJLEtBQUssNkJBQWEsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3JDLElBQ0UsV0FBVyxLQUFLLDZCQUFpQjtvQkFDakMsV0FBVyxLQUFLLDZCQUFpQixFQUNqQztvQkFDQSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztpQkFDM0Q7YUFDRjtZQUVELElBQUksSUFBSSxLQUFLLDZCQUFhLENBQUMsUUFBUSxFQUFFO2dCQUNuQyxJQUFJLFdBQVcsS0FBSyw2QkFBaUIsRUFBRTtvQkFDckMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7aUJBQzNEO2dCQUNELElBQUksV0FBVyxLQUFLLDZCQUFpQixFQUFFO29CQUNyQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztpQkFDM0Q7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyJ9
@@ -1,3 +0,0 @@
1
- import { EnumLinkedListType } from "../types/EnumLinkedListType";
2
- import ILinkedList from "../types/ILinkedList";
3
- export declare const createLinkedList: <T>(type: EnumLinkedListType, capacity?: number | undefined) => ILinkedList<T>;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createLinkedList = void 0;
4
- var EnumLinkedListType_1 = require("../types/EnumLinkedListType");
5
- var DoubleLinkedList_1 = require("../data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList");
6
- var SingleLinkedList_1 = require("../data-structures/LinkedList/SingleLinkedList/SingleLinkedList");
7
- exports.createLinkedList = function (type, capacity) {
8
- var linkedList;
9
- switch (type) {
10
- case EnumLinkedListType_1.EnumLinkedListType.DOUBLE:
11
- linkedList = new DoubleLinkedList_1.default(capacity);
12
- break;
13
- case EnumLinkedListType_1.EnumLinkedListType.SINGLE:
14
- linkedList = new SingleLinkedList_1.default(capacity);
15
- break;
16
- default:
17
- throw new Error("Invalid list type");
18
- }
19
- return linkedList;
20
- };
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTGlua2VkTGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL2NyZWF0ZUxpbmtlZExpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0VBQWlFO0FBQ2pFLG9HQUErRjtBQUMvRixvR0FBK0Y7QUFHbEYsUUFBQSxnQkFBZ0IsR0FBRyxVQUM5QixJQUF3QixFQUN4QixRQUFpQjtJQUVqQixJQUFJLFVBQTBCLENBQUM7SUFFL0IsUUFBUSxJQUFJLEVBQUU7UUFDWixLQUFLLHVDQUFrQixDQUFDLE1BQU07WUFDNUIsVUFBVSxHQUFHLElBQUksMEJBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUMsTUFBTTtRQUNSLEtBQUssdUNBQWtCLENBQUMsTUFBTTtZQUM1QixVQUFVLEdBQUcsSUFBSSwwQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QyxNQUFNO1FBQ1I7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FDeEM7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUMifQ==
@@ -1 +0,0 @@
1
- export declare type ArrayMatrix = Array<Array<number>>;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJyYXlNYXRyaXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvQXJyYXlNYXRyaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9