@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,247 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var ValueOutOfRangeException_1 = require("../../../exceptions/ValueOutOfRangeException");
4
- var CollectionIsFullException_1 = require("../../../exceptions/CollectionIsFullException");
5
- var CollectionIsEmptyException_1 = require("../../../exceptions/CollectionIsEmptyException");
6
- var IndexOutOfBoundsException_1 = require("../../../exceptions/IndexOutOfBoundsException");
7
- var AbstractLinkedList = /** @class */ (function () {
8
- /**
9
- * Create empty instance
10
- */
11
- function AbstractLinkedList(capacity) {
12
- this._capacity = AbstractLinkedList.calculateCapacity(capacity);
13
- this._head = null;
14
- this._tail = null;
15
- this._length = 0;
16
- }
17
- /**
18
- * Will calculate real capacity value
19
- * @throws {ValueOutOfRangeException} when capacity is out of range
20
- */
21
- AbstractLinkedList.calculateCapacity = function (capacity) {
22
- if (capacity === undefined) {
23
- return Number.MAX_VALUE;
24
- }
25
- if (capacity <= 0) {
26
- throw new ValueOutOfRangeException_1.default("Capacity must be larger than 0");
27
- }
28
- return capacity;
29
- };
30
- /**
31
- * Will insert node between nodeLeft and nodeRight
32
- * @throws {CollectionIsFullException} when list is full
33
- */
34
- AbstractLinkedList.prototype.insertNodeBetweenTwoNodes = function (targetNode, leftNode, rightNode) {
35
- if (this.isFull()) {
36
- throw new CollectionIsFullException_1.default("List is full, no more space available");
37
- }
38
- if (this._head === null) {
39
- this._head = targetNode;
40
- }
41
- if (this._tail === null) {
42
- this._tail = targetNode;
43
- }
44
- if (!leftNode) {
45
- leftNode = this._tail;
46
- }
47
- if (!rightNode) {
48
- rightNode = this._head;
49
- }
50
- this.insertNodeBetweenTwoNodesImpl(targetNode, leftNode, rightNode);
51
- this._length++;
52
- };
53
- /**
54
- * Will remove the node from its neighbors nodes links
55
- * @throws {CollectionIsEmptyException} when list is empty
56
- */
57
- AbstractLinkedList.prototype.deleteNode = function (node) {
58
- if (this.isEmpty()) {
59
- throw new CollectionIsEmptyException_1.default("cannot delete because list is empty");
60
- }
61
- this.deleteNodeImpl(node);
62
- this._length--;
63
- if (this.isEmpty()) {
64
- this.clear();
65
- }
66
- return node;
67
- };
68
- /**
69
- * Will find node by its index
70
- * @throws {CollectionIsEmptyException} when list is empty
71
- * @throws {IndexOutOfBoundsException} when given index is out of range
72
- */
73
- AbstractLinkedList.prototype.getNodeByIndex = function (index) {
74
- var isIndexNotInRange = index < 0 || index > this._length;
75
- if (this.isEmpty()) {
76
- throw new CollectionIsEmptyException_1.default("List is empty");
77
- }
78
- if (isIndexNotInRange) {
79
- throw new IndexOutOfBoundsException_1.default("Index exceed list length");
80
- }
81
- var currentNode = this._tail;
82
- var counter = 0;
83
- while (currentNode && counter < index) {
84
- currentNode = currentNode.next;
85
- counter++;
86
- }
87
- return currentNode;
88
- };
89
- /**
90
- * Push into start
91
- * @throws {CollectionIsFullException} when there is no space available
92
- */
93
- AbstractLinkedList.prototype.unshift = function (value) {
94
- var node = this.createNode(value);
95
- this.insertNodeBetweenTwoNodes(node, this._head, this._tail);
96
- this._tail = node;
97
- };
98
- /**
99
- * Push into end
100
- * @throws {CollectionIsFullException} when there is no space available
101
- */
102
- AbstractLinkedList.prototype.push = function (value) {
103
- var node = this.createNode(value);
104
- this.insertNodeBetweenTwoNodes(node, this._head, this._tail);
105
- this._head = node;
106
- };
107
- /**
108
- * Push from index
109
- * @throws {IndexOutOfBoundsException} when given index is out of range
110
- * @throws {CollectionIsFullException} when there is no space available
111
- */
112
- AbstractLinkedList.prototype.pushFromIndex = function (value, fromIndex) {
113
- var isIndexNotInRange = fromIndex < 0 || fromIndex > this._length;
114
- var shouldPushAsFirst = this.isEmpty() && fromIndex === 0;
115
- if (isIndexNotInRange) {
116
- throw new IndexOutOfBoundsException_1.default("index must be in range between 0 and list length");
117
- }
118
- if (shouldPushAsFirst) {
119
- this.push(value);
120
- }
121
- else {
122
- var node = this.createNode(value);
123
- var nodeLeft = this.getNodeByIndex(fromIndex - 1);
124
- var nodeRight = this.getNodeByIndex(fromIndex);
125
- this.insertNodeBetweenTwoNodes(node, nodeLeft, nodeRight);
126
- }
127
- };
128
- /**
129
- * Delete node from list's end
130
- * @throws {CollectionIsEmptyException} when list is empty
131
- */
132
- AbstractLinkedList.prototype.pop = function () {
133
- var deletedNode = this.deleteNode(this._head);
134
- this.popImpl();
135
- return deletedNode.data;
136
- };
137
- /**
138
- * Delete node from list's start and get its data
139
- * @throws {CollectionIsEmptyException} when list is empty
140
- */
141
- AbstractLinkedList.prototype.shift = function () {
142
- var deletedNode = this.deleteNode(this._tail);
143
- this.shiftImpl();
144
- return deletedNode.data;
145
- };
146
- /**
147
- * Delete node from list by index from start
148
- * @throws {CollectionIsEmptyException} when list is empty
149
- */
150
- AbstractLinkedList.prototype.deleteFromIndex = function (fromIndex) {
151
- var nodeToDelete = this.getNodeByIndex(fromIndex);
152
- var deletedNode = this.deleteNode(nodeToDelete);
153
- return deletedNode.data;
154
- };
155
- /**
156
- * List length
157
- */
158
- AbstractLinkedList.prototype.length = function () {
159
- return this._length;
160
- };
161
- /**
162
- * Is list empty
163
- */
164
- AbstractLinkedList.prototype.isEmpty = function () {
165
- return this._length === 0 || this._head === null || this._tail === null;
166
- };
167
- /**
168
- * Is list full
169
- */
170
- AbstractLinkedList.prototype.isFull = function () {
171
- return this._length >= this._capacity;
172
- };
173
- /**
174
- * Check if element exists in list
175
- */
176
- AbstractLinkedList.prototype.has = function (item) {
177
- return this.getAsArray().includes(item);
178
- };
179
- /**
180
- * Get head element data
181
- * @throws {CollectionIsEmptyException} when head does not exist
182
- */
183
- AbstractLinkedList.prototype.peek = function () {
184
- if (this.isEmpty() || !this._head) {
185
- throw new CollectionIsEmptyException_1.default("head does not exist");
186
- }
187
- return this._head.data;
188
- };
189
- /**
190
- * Get tail element data
191
- * @throws {CollectionIsEmptyException} when tail does not exists
192
- */
193
- AbstractLinkedList.prototype.peekFromStart = function () {
194
- if (this.isEmpty() || !this._tail) {
195
- throw new CollectionIsEmptyException_1.default("tail does not exist");
196
- }
197
- return this._tail.data;
198
- };
199
- /**
200
- * Get list element by index from start
201
- * @throws {CollectionIsEmptyException} when list is empty
202
- * @throws {IndexOutOfBoundsException} when given index is out of range
203
- */
204
- AbstractLinkedList.prototype.peekByIndex = function (index) {
205
- var node = this.getNodeByIndex(index);
206
- return node.data;
207
- };
208
- /**
209
- * Remove all elements from list
210
- */
211
- AbstractLinkedList.prototype.clear = function () {
212
- this._head = null;
213
- this._tail = null;
214
- this._length = 0;
215
- };
216
- /**
217
- * Get elements as an array
218
- */
219
- AbstractLinkedList.prototype.getAsArray = function () {
220
- var array = [];
221
- var currentNode = this._tail;
222
- var counter = 0;
223
- while (currentNode && counter < this._length) {
224
- if (currentNode)
225
- array.push(currentNode.data);
226
- currentNode = currentNode.next;
227
- counter++;
228
- }
229
- return array;
230
- };
231
- /**
232
- * Add elements to list from array
233
- * @throws {CollectionIsFullException} when list is full
234
- * */
235
- AbstractLinkedList.prototype.pushFromArray = function (elements) {
236
- var _this = this;
237
- elements.forEach(function (element) {
238
- if (_this.isFull()) {
239
- throw new CollectionIsFullException_1.default("List is full, no more space available");
240
- }
241
- _this.push(element);
242
- });
243
- };
244
- return AbstractLinkedList;
245
- }());
246
- exports.default = AbstractLinkedList;
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RMaW5rZWRMaXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLXN0cnVjdHVyZXMvTGlua2VkTGlzdC9BYnN0cmFjdExpbmtlZExpc3QvQWJzdHJhY3RMaW5rZWRMaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEseUZBQW9GO0FBQ3BGLDJGQUFzRjtBQUN0Riw2RkFBd0Y7QUFDeEYsMkZBQXNGO0FBRXRGO0lBTUU7O09BRUc7SUFDSCw0QkFBc0IsUUFBaUI7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7OztPQUdHO0lBQ1ksb0NBQWlCLEdBQWhDLFVBQWlDLFFBQWlCO1FBQ2hELElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUMxQixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDekI7UUFDRCxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUU7WUFDakIsTUFBTSxJQUFJLGtDQUF3QixDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDdEU7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssc0RBQXlCLEdBQWpDLFVBQ0UsVUFBaUMsRUFDakMsUUFBc0MsRUFDdEMsU0FBdUM7UUFFdkMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakIsTUFBTSxJQUFJLG1DQUF5QixDQUNqQyx1Q0FBdUMsQ0FDeEMsQ0FBQztTQUNIO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxHQUFH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
@@ -1,20 +0,0 @@
1
- export default abstract class AbstractLinkedNode<T> {
2
- protected _next: AbstractLinkedNode<T> | null;
3
- protected readonly _data: T;
4
- /**
5
- * Will create empty node
6
- */
7
- protected constructor(data: T, next?: AbstractLinkedNode<T> | null);
8
- /**
9
- * Get data of node
10
- */
11
- get data(): T;
12
- /**
13
- * Get next node link
14
- */
15
- get next(): AbstractLinkedNode<T> | null;
16
- /**
17
- * Set next node link
18
- */
19
- set next(value: AbstractLinkedNode<T> | null);
20
- }
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var AbstractLinkedNode = /** @class */ (function () {
4
- /**
5
- * Will create empty node
6
- */
7
- function AbstractLinkedNode(data, next) {
8
- if (next === void 0) { next = null; }
9
- this._data = data;
10
- this._next = next;
11
- }
12
- Object.defineProperty(AbstractLinkedNode.prototype, "data", {
13
- /**
14
- * Get data of node
15
- */
16
- get: function () {
17
- return this._data;
18
- },
19
- enumerable: false,
20
- configurable: true
21
- });
22
- Object.defineProperty(AbstractLinkedNode.prototype, "next", {
23
- /**
24
- * Get next node link
25
- */
26
- get: function () {
27
- return this._next;
28
- },
29
- /**
30
- * Set next node link
31
- */
32
- set: function (value) {
33
- this._next = value;
34
- },
35
- enumerable: false,
36
- configurable: true
37
- });
38
- return AbstractLinkedNode;
39
- }());
40
- exports.default = AbstractLinkedNode;
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RMaW5rZWROb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLXN0cnVjdHVyZXMvTGlua2VkTGlzdC9BYnN0cmFjdExpbmtlZExpc3QvQWJzdHJhY3RMaW5rZWROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7SUFJRTs7T0FFRztJQUNILDRCQUFzQixJQUFPLEVBQUUsSUFBeUM7UUFBekMscUJBQUEsRUFBQSxXQUF5QztRQUN0RSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBS0Qsc0JBQVcsb0NBQUk7UUFIZjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsb0NBQUk7UUFIZjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7UUFFRDs7V0FFRzthQUNILFVBQWdCLEtBQW1DO1lBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7OztPQVBBO0lBUUgseUJBQUM7QUFBRCxDQUFDLEFBaENELElBZ0NDIn0=
@@ -1,42 +0,0 @@
1
- import AbstractLinkedList from "../AbstractLinkedList/AbstractLinkedList";
2
- import DoubleLinkedNode from "./DoubleLinkedNode";
3
- /**
4
- * Linear data structure
5
- * Each node has next and prev sibling
6
- * Head and tail are linked to each other
7
- */
8
- export default class DoubleLinkedList<T> extends AbstractLinkedList<T> {
9
- /**
10
- * Override types
11
- */
12
- protected _head: DoubleLinkedNode<T> | null;
13
- protected _tail: DoubleLinkedNode<T> | null;
14
- /**
15
- * @inheritDoc
16
- */
17
- constructor(capacity?: number);
18
- /**
19
- * @inheritDoc
20
- */
21
- protected createNode(value: T): DoubleLinkedNode<T>;
22
- /**
23
- * @inheritDoc
24
- */
25
- protected insertNodeBetweenTwoNodesImpl(targetNode: DoubleLinkedNode<T>, leftNode: DoubleLinkedNode<T>, rightNode: DoubleLinkedNode<T>): void;
26
- /**
27
- * @inheritDoc
28
- */
29
- protected deleteNodeImpl(node: DoubleLinkedNode<T>): void;
30
- /**
31
- * @inheritDoc
32
- */
33
- protected popImpl(): void;
34
- /**
35
- * @inheritDoc
36
- */
37
- protected shiftImpl(): void;
38
- /**
39
- * @inheritDoc
40
- */
41
- reverse(): void;
42
- }
@@ -1,98 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- var AbstractLinkedList_1 = require("../AbstractLinkedList/AbstractLinkedList");
17
- var DoubleLinkedNode_1 = require("./DoubleLinkedNode");
18
- /**
19
- * Linear data structure
20
- * Each node has next and prev sibling
21
- * Head and tail are linked to each other
22
- */
23
- var DoubleLinkedList = /** @class */ (function (_super) {
24
- __extends(DoubleLinkedList, _super);
25
- /**
26
- * @inheritDoc
27
- */
28
- function DoubleLinkedList(capacity) {
29
- var _this = _super.call(this, capacity) || this;
30
- _this._head = null;
31
- _this._tail = null;
32
- return _this;
33
- }
34
- /**
35
- * @inheritDoc
36
- */
37
- DoubleLinkedList.prototype.createNode = function (value) {
38
- return new DoubleLinkedNode_1.default(value);
39
- };
40
- /**
41
- * @inheritDoc
42
- */
43
- DoubleLinkedList.prototype.insertNodeBetweenTwoNodesImpl = function (targetNode, leftNode, rightNode) {
44
- targetNode.next = rightNode;
45
- targetNode.prev = leftNode;
46
- if (targetNode.prev) {
47
- targetNode.prev.next = targetNode;
48
- }
49
- if (targetNode.next) {
50
- targetNode.next.prev = targetNode;
51
- }
52
- };
53
- /**
54
- * @inheritDoc
55
- */
56
- DoubleLinkedList.prototype.deleteNodeImpl = function (node) {
57
- node.prev.next = node.next;
58
- node.next.prev = node.prev;
59
- node.next = null;
60
- node.prev = null;
61
- };
62
- /**
63
- * @inheritDoc
64
- */
65
- DoubleLinkedList.prototype.popImpl = function () {
66
- var _a;
67
- this._head = ((_a = this._tail) === null || _a === void 0 ? void 0 : _a.prev) || null;
68
- };
69
- /**
70
- * @inheritDoc
71
- */
72
- DoubleLinkedList.prototype.shiftImpl = function () {
73
- var _a;
74
- this._tail = ((_a = this._head) === null || _a === void 0 ? void 0 : _a.next) || null;
75
- };
76
- /**
77
- * @inheritDoc
78
- */
79
- DoubleLinkedList.prototype.reverse = function () {
80
- var currentNode = this._tail;
81
- var i = 0;
82
- while (currentNode && i < this._length) {
83
- var newPrev = currentNode.next;
84
- var newNext = currentNode.prev;
85
- currentNode.prev = newPrev;
86
- currentNode.next = newNext;
87
- i++;
88
- currentNode = newNext;
89
- }
90
- if (currentNode) {
91
- this._tail = currentNode.next;
92
- this._head = currentNode;
93
- }
94
- };
95
- return DoubleLinkedList;
96
- }(AbstractLinkedList_1.default));
97
- exports.default = DoubleLinkedList;
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG91YmxlTGlua2VkTGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1zdHJ1Y3R1cmVzL0xpbmtlZExpc3QvRG91YmxlTGlua2VkTGlzdC9Eb3VibGVMaW5rZWRMaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtFQUEwRTtBQUMxRSx1REFBa0Q7QUFFbEQ7Ozs7R0FJRztBQUNIO0lBQWlELG9DQUFxQjtJQU9wRTs7T0FFRztJQUNILDBCQUFtQixRQUFpQjtRQUFwQyxZQUNFLGtCQUFNLFFBQVEsQ0FBQyxTQUdoQjtRQUZDLEtBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLEtBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDOztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDTyxxQ0FBVSxHQUFwQixVQUFxQixLQUFRO1FBQzNCLE9BQU8sSUFBSSwwQkFBZ0IsQ0FBSSxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDTyx3REFBNkIsR0FBdkMsVUFDRSxVQUErQixFQUMvQixRQUE2QixFQUM3QixTQUE4QjtRQUU5QixVQUFVLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUM1QixVQUFVLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUUzQixJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDbkIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQ25CLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNPLHlDQUFjLEdBQXhCLFVBQXlCLElBQXlCO1FBQ2hELElBQUssQ0FBQyxJQUFLLENBQUMsSUFBSSxHQUFHLElBQUssQ0FBQyxJQUFJLENBQUM7UUFDOUIsSUFBSyxDQUFDLElBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSyxDQUFDLElBQUksQ0FBQztRQUM5QixJQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDTyxrQ0FBTyxHQUFqQjs7UUFDRSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsSUFBSSxLQUFJLElBQUksQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxvQ0FBUyxHQUFuQjs7UUFDRSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsSUFBSSxLQUFJLElBQUksQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxrQ0FBTyxHQUFkO1FBQ0UsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFVixPQUFPLFdBQVcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN0QyxJQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFFakMsV0FBVyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7WUFDM0IsV0FBVyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7WUFFM0IsQ0FBQyxFQUFFLENBQUM7WUFDSixXQUFXLEdBQUcsT0FBTyxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxXQUFXLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBQ0gsdUJBQUM7QUFBRCxDQUFDLEFBekZELENBQWlELDRCQUFrQixHQXlGbEUifQ==
@@ -1,25 +0,0 @@
1
- import AbstractLinkedNode from "../AbstractLinkedList/AbstractLinkedNode";
2
- export default class DoubleLinkedNode<T> extends AbstractLinkedNode<T> {
3
- protected _prev: DoubleLinkedNode<T> | null;
4
- protected _next: DoubleLinkedNode<T> | null;
5
- /**
6
- * Will create empty node
7
- */
8
- constructor(data: T, next?: DoubleLinkedNode<T> | null, prev?: DoubleLinkedNode<T> | null);
9
- /**
10
- * Set previous node link
11
- */
12
- set prev(value: DoubleLinkedNode<T> | null);
13
- /**
14
- * Get previous node link
15
- */
16
- get prev(): DoubleLinkedNode<T> | null;
17
- /**
18
- * @inheritDoc
19
- */
20
- set next(value: DoubleLinkedNode<T> | null);
21
- /**
22
- * @inheritDoc
23
- */
24
- get next(): DoubleLinkedNode<T> | null;
25
- }
@@ -1,65 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- var AbstractLinkedNode_1 = require("../AbstractLinkedList/AbstractLinkedNode");
17
- var DoubleLinkedNode = /** @class */ (function (_super) {
18
- __extends(DoubleLinkedNode, _super);
19
- /**
20
- * Will create empty node
21
- */
22
- function DoubleLinkedNode(data, next, prev) {
23
- if (next === void 0) { next = null; }
24
- if (prev === void 0) { prev = null; }
25
- var _this = _super.call(this, data) || this;
26
- _this._prev = prev;
27
- _this._next = next;
28
- return _this;
29
- }
30
- Object.defineProperty(DoubleLinkedNode.prototype, "prev", {
31
- /**
32
- * Get previous node link
33
- */
34
- get: function () {
35
- return this._prev;
36
- },
37
- /**
38
- * Set previous node link
39
- */
40
- set: function (value) {
41
- this._prev = value;
42
- },
43
- enumerable: false,
44
- configurable: true
45
- });
46
- Object.defineProperty(DoubleLinkedNode.prototype, "next", {
47
- /**
48
- * @inheritDoc
49
- */
50
- get: function () {
51
- return this._next;
52
- },
53
- /**
54
- * @inheritDoc
55
- */
56
- set: function (value) {
57
- this._next = value;
58
- },
59
- enumerable: false,
60
- configurable: true
61
- });
62
- return DoubleLinkedNode;
63
- }(AbstractLinkedNode_1.default));
64
- exports.default = DoubleLinkedNode;
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG91YmxlTGlua2VkTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1zdHJ1Y3R1cmVzL0xpbmtlZExpc3QvRG91YmxlTGlua2VkTGlzdC9Eb3VibGVMaW5rZWROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtFQUEwRTtBQUUxRTtJQUFpRCxvQ0FBcUI7SUFJcEU7O09BRUc7SUFDSCwwQkFDRSxJQUFPLEVBQ1AsSUFBdUMsRUFDdkMsSUFBdUM7UUFEdkMscUJBQUEsRUFBQSxXQUF1QztRQUN2QyxxQkFBQSxFQUFBLFdBQXVDO1FBSHpDLFlBS0Usa0JBQU0sSUFBSSxDQUFDLFNBR1o7UUFGQyxLQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixLQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzs7SUFDcEIsQ0FBQztJQUtELHNCQUFXLGtDQUFJO1FBSWY7O1dBRUc7YUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO1FBWkQ7O1dBRUc7YUFDSCxVQUFnQixLQUFpQztZQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNyQixDQUFDOzs7T0FBQTtJQVlELHNCQUFXLGtDQUFJO1FBSWY7O1dBRUc7YUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO1FBWkQ7O1dBRUc7YUFDSCxVQUFnQixLQUFpQztZQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNyQixDQUFDOzs7T0FBQTtJQVFILHVCQUFDO0FBQUQsQ0FBQyxBQTVDRCxDQUFpRCw0QkFBa0IsR0E0Q2xFIn0=
@@ -1,18 +0,0 @@
1
- import IBiDirectIterator from "../../../types/IBiDirectIterator";
2
- import IBiDirectIterable from "../../../types/IBiDirectIterable";
3
- import DoubleLinkedList from "./DoubleLinkedList";
4
- /**
5
- * @inheritDoc
6
- */
7
- export default class IterableDoubleLinkedList<T> extends DoubleLinkedList<T> implements IBiDirectIterable<T> {
8
- /**
9
- * @inheritDoc
10
- */
11
- constructor(capacity?: number);
12
- /**
13
- * List iterator
14
- * @throws {CollectionIsEmptyException} when list is empty
15
- * @throws {IndexOutOfBoundsException} when given index is out of range
16
- */
17
- iterator(fromIndex?: number): IBiDirectIterator<T>;
18
- }
@@ -1,86 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- var IsNotFoundException_1 = require("../../../exceptions/IsNotFoundException");
17
- var DoubleLinkedList_1 = require("./DoubleLinkedList");
18
- /**
19
- * @inheritDoc
20
- */
21
- var IterableDoubleLinkedList = /** @class */ (function (_super) {
22
- __extends(IterableDoubleLinkedList, _super);
23
- /**
24
- * @inheritDoc
25
- */
26
- function IterableDoubleLinkedList(capacity) {
27
- return _super.call(this, capacity) || this;
28
- }
29
- /**
30
- * List iterator
31
- * @throws {CollectionIsEmptyException} when list is empty
32
- * @throws {IndexOutOfBoundsException} when given index is out of range
33
- */
34
- IterableDoubleLinkedList.prototype.iterator = function (fromIndex) {
35
- if (fromIndex === void 0) { fromIndex = 0; }
36
- var head = this._head;
37
- var tail = this._tail;
38
- var activeNode = this.getNodeByIndex(fromIndex);
39
- var iterator = {
40
- /**
41
- * @inheritDoc
42
- */
43
- current: function () {
44
- return activeNode.data;
45
- },
46
- /**
47
- * @inheritDoc
48
- */
49
- hasNext: function () {
50
- return Boolean(activeNode.next) && activeNode !== head;
51
- },
52
- /**
53
- * @inheritDoc
54
- */
55
- hasPrev: function () {
56
- return Boolean(activeNode.prev) && activeNode !== tail;
57
- },
58
- /**
59
- * @inheritDoc
60
- * @throws {IsNotFoundException} when next element does not exist
61
- */
62
- next: function () {
63
- if (!iterator.hasNext()) {
64
- throw new IsNotFoundException_1.default("Next element does not exist");
65
- }
66
- activeNode = activeNode.next;
67
- return activeNode.data;
68
- },
69
- /**
70
- * @inheritDoc
71
- * @throws {IsNotFoundException} when prev element does not exists
72
- */
73
- prev: function () {
74
- if (!iterator.hasPrev()) {
75
- throw new IsNotFoundException_1.default("Prev element does not exist");
76
- }
77
- activeNode = activeNode.prev;
78
- return activeNode.data;
79
- },
80
- };
81
- return iterator;
82
- };
83
- return IterableDoubleLinkedList;
84
- }(DoubleLinkedList_1.default));
85
- exports.default = IterableDoubleLinkedList;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXRlcmFibGVEb3VibGVMaW5rZWRMaXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLXN0cnVjdHVyZXMvTGlua2VkTGlzdC9Eb3VibGVMaW5rZWRMaXN0L0l0ZXJhYmxlRG91YmxlTGlua2VkTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFFQSwrRUFBMEU7QUFFMUUsdURBQWtEO0FBRWxEOztHQUVHO0FBQ0g7SUFDVSw0Q0FBbUI7SUFFM0I7O09BRUc7SUFDSCxrQ0FBbUIsUUFBaUI7ZUFDbEMsa0JBQU0sUUFBUSxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksMkNBQVEsR0FBZixVQUFnQixTQUFhO1FBQWIsMEJBQUEsRUFBQSxhQUFhO1FBQzNCLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBd0IsQ0FBQztRQUV2RSxJQUFNLFFBQVEsR0FBeUI7WUFDckM7O2VBRUc7WUFDSCxPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ3pCLENBQUM7WUFDRDs7ZUFFRztZQUNILE9BQU8sRUFBUDtnQkFDRSxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxLQUFLLElBQUksQ0FBQztZQUN6RCxDQUFDO1lBQ0Q7O2VBRUc7WUFDSCxPQUFPLEVBQVA7Z0JBQ0UsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUM7WUFDekQsQ0FBQztZQUNEOzs7ZUFHRztZQUNILElBQUksRUFBRTtnQkFDSixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUN2QixNQUFNLElBQUksNkJBQW1CLENBQUMsNkJBQTZCLENBQUMsQ0FBQztpQkFDOUQ7Z0JBQ0QsVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFLLENBQUM7Z0JBQzlCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQztZQUN6QixDQUFDO1lBQ0Q7OztlQUdHO1lBQ0gsSUFBSSxFQUFFO2dCQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQ3ZCLE1BQU0sSUFBSSw2QkFBbUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2lCQUM5RDtnQkFDRCxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUssQ0FBQztnQkFDOUIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDO1FBRUYsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUNILCtCQUFDO0FBQUQsQ0FBQyxBQWpFRCxDQUNVLDBCQUFnQixHQWdFekIifQ==