@raikuxq/alg-ds 1.1.5 → 1.1.6

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 (162) hide show
  1. package/README.md +0 -14
  2. package/package.json +1 -1
  3. package/lib/algorithms/binary-search.d.ts +0 -5
  4. package/lib/algorithms/binary-search.js +0 -27
  5. package/lib/algorithms/factorial.d.ts +0 -9
  6. package/lib/algorithms/factorial.js +0 -17
  7. package/lib/algorithms/fibonacci.d.ts +0 -9
  8. package/lib/algorithms/fibonacci.js +0 -17
  9. package/lib/algorithms/memoize.d.ts +0 -5
  10. package/lib/algorithms/memoize.js +0 -22
  11. package/lib/algorithms/sorts/bubble-sort.d.ts +0 -9
  12. package/lib/algorithms/sorts/bubble-sort.js +0 -23
  13. package/lib/algorithms/sorts/insertion-sort.d.ts +0 -9
  14. package/lib/algorithms/sorts/insertion-sort.js +0 -25
  15. package/lib/algorithms/sorts/merge-sort.d.ts +0 -9
  16. package/lib/algorithms/sorts/merge-sort.js +0 -61
  17. package/lib/algorithms/sorts/quick-sort.d.ts +0 -9
  18. package/lib/algorithms/sorts/quick-sort.js +0 -45
  19. package/lib/algorithms/sorts/select-sort.d.ts +0 -9
  20. package/lib/algorithms/sorts/select-sort.js +0 -20
  21. package/lib/algorithms/transpose-matrix.d.ts +0 -5
  22. package/lib/algorithms/transpose-matrix.js +0 -20
  23. package/lib/constants.d.ts +0 -2
  24. package/lib/constants.js +0 -6
  25. package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.d.ts +0 -15
  26. package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.js +0 -53
  27. package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.d.ts +0 -60
  28. package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.js +0 -36
  29. package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.d.ts +0 -13
  30. package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.js +0 -59
  31. package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.d.ts +0 -70
  32. package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.js +0 -268
  33. package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.d.ts +0 -16
  34. package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.js +0 -70
  35. package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.d.ts +0 -57
  36. package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.js +0 -234
  37. package/lib/data-structures/Graph/AbstractGraph.d.ts +0 -84
  38. package/lib/data-structures/Graph/AbstractGraph.js +0 -141
  39. package/lib/data-structures/Graph/DirectedGraph.d.ts +0 -24
  40. package/lib/data-structures/Graph/DirectedGraph.js +0 -85
  41. package/lib/data-structures/Graph/GraphEdge.d.ts +0 -16
  42. package/lib/data-structures/Graph/GraphEdge.js +0 -43
  43. package/lib/data-structures/Graph/UndirectedGraph.d.ts +0 -28
  44. package/lib/data-structures/Graph/UndirectedGraph.js +0 -102
  45. package/lib/data-structures/Graph/demo/generateRandomGraph.d.ts +0 -4
  46. package/lib/data-structures/Graph/demo/generateRandomGraph.js +0 -72
  47. package/lib/data-structures/Graph/iterator/AbstractGraphIterator.d.ts +0 -35
  48. package/lib/data-structures/Graph/iterator/AbstractGraphIterator.js +0 -90
  49. package/lib/data-structures/Graph/iterator/GraphIteratorBFS.d.ts +0 -28
  50. package/lib/data-structures/Graph/iterator/GraphIteratorBFS.js +0 -70
  51. package/lib/data-structures/Graph/iterator/GraphIteratorDFS.d.ts +0 -28
  52. package/lib/data-structures/Graph/iterator/GraphIteratorDFS.js +0 -70
  53. package/lib/data-structures/Graph/iterator/GraphIteratorDijkstra.d.ts +0 -32
  54. package/lib/data-structures/Graph/iterator/GraphIteratorDijkstra.js +0 -99
  55. package/lib/data-structures/Graph/presenter/presenterAdjacencyLists.d.ts +0 -19
  56. package/lib/data-structures/Graph/presenter/presenterAdjacencyLists.js +0 -28
  57. package/lib/data-structures/Graph/presenter/presenterAdjacencyMatrix.d.ts +0 -32
  58. package/lib/data-structures/Graph/presenter/presenterAdjacencyMatrix.js +0 -48
  59. package/lib/data-structures/Graph/searching/hasPath.d.ts +0 -9
  60. package/lib/data-structures/Graph/searching/hasPath.js +0 -29
  61. package/lib/data-structures/Graph/searching/shortestPath.d.ts +0 -9
  62. package/lib/data-structures/Graph/searching/shortestPath.js +0 -29
  63. package/lib/data-structures/Graph/strategy/BFSIterationStrategy.d.ts +0 -6
  64. package/lib/data-structures/Graph/strategy/BFSIterationStrategy.js +0 -13
  65. package/lib/data-structures/Graph/strategy/DFSIterationStrategy.d.ts +0 -6
  66. package/lib/data-structures/Graph/strategy/DFSIterationStrategy.js +0 -13
  67. package/lib/data-structures/Graph/strategy/DijkstraIterationStrategy.d.ts +0 -6
  68. package/lib/data-structures/Graph/strategy/DijkstraIterationStrategy.js +0 -13
  69. package/lib/data-structures/Graph/transposing/transposeDirectedGraph.d.ts +0 -2
  70. package/lib/data-structures/Graph/transposing/transposeDirectedGraph.js +0 -14
  71. package/lib/data-structures/HashTable/HashTable.d.ts +0 -73
  72. package/lib/data-structures/HashTable/HashTable.js +0 -169
  73. package/lib/data-structures/HashTable/HashTableNode.d.ts +0 -11
  74. package/lib/data-structures/HashTable/HashTableNode.js +0 -39
  75. package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.d.ts +0 -125
  76. package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.js +0 -236
  77. package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.d.ts +0 -20
  78. package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.js +0 -41
  79. package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.d.ts +0 -48
  80. package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.js +0 -150
  81. package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.d.ts +0 -25
  82. package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.js +0 -65
  83. package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.d.ts +0 -52
  84. package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.js +0 -137
  85. package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.d.ts +0 -7
  86. package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.js +0 -29
  87. package/lib/data-structures/LoopedArray/LoopedArray.d.ts +0 -86
  88. package/lib/data-structures/LoopedArray/LoopedArray.js +0 -161
  89. package/lib/data-structures/Queue/Queue.d.ts +0 -50
  90. package/lib/data-structures/Queue/Queue.js +0 -83
  91. package/lib/data-structures/Stack/Stack.d.ts +0 -50
  92. package/lib/data-structures/Stack/Stack.js +0 -83
  93. package/lib/exports/algorithms.d.ts +0 -16
  94. package/lib/exports/algorithms.js +0 -36
  95. package/lib/exports/constants.d.ts +0 -2
  96. package/lib/exports/constants.js +0 -7
  97. package/lib/exports/data-structures.d.ts +0 -11
  98. package/lib/exports/data-structures.js +0 -24
  99. package/lib/exports/helpers.d.ts +0 -6
  100. package/lib/exports/helpers.js +0 -14
  101. package/lib/exports/sorts.d.ts +0 -6
  102. package/lib/exports/sorts.js +0 -14
  103. package/lib/exports/utils.d.ts +0 -3
  104. package/lib/exports/utils.js +0 -14
  105. package/lib/exports.d.ts +0 -44
  106. package/lib/exports.js +0 -89
  107. package/lib/helpers/createBinaryTree.d.ts +0 -6
  108. package/lib/helpers/createBinaryTree.js +0 -22
  109. package/lib/helpers/createGraph.d.ts +0 -6
  110. package/lib/helpers/createGraph.js +0 -24
  111. package/lib/helpers/createGraphFromMatrix.d.ts +0 -7
  112. package/lib/helpers/createGraphFromMatrix.js +0 -37
  113. package/lib/helpers/createLinkedList.d.ts +0 -3
  114. package/lib/helpers/createLinkedList.js +0 -21
  115. package/lib/index.d.ts +0 -3
  116. package/lib/index.js +0 -6
  117. package/lib/types/ArrayMatrix.d.ts +0 -1
  118. package/lib/types/ArrayMatrix.js +0 -3
  119. package/lib/types/EnumBinarySearchTreeType.d.ts +0 -4
  120. package/lib/types/EnumBinarySearchTreeType.js +0 -9
  121. package/lib/types/EnumGraphType.d.ts +0 -4
  122. package/lib/types/EnumGraphType.js +0 -9
  123. package/lib/types/EnumLinkedListType.d.ts +0 -4
  124. package/lib/types/EnumLinkedListType.js +0 -9
  125. package/lib/types/EnumRandomGenerationFormat.d.ts +0 -4
  126. package/lib/types/EnumRandomGenerationFormat.js +0 -9
  127. package/lib/types/EnumTreeTraversalType.d.ts +0 -5
  128. package/lib/types/EnumTreeTraversalType.js +0 -10
  129. package/lib/types/FnCompareTwo.d.ts +0 -1
  130. package/lib/types/FnCompareTwo.js +0 -3
  131. package/lib/types/FnToMemoize.d.ts +0 -1
  132. package/lib/types/FnToMemoize.js +0 -3
  133. package/lib/types/IArrayFacade.d.ts +0 -4
  134. package/lib/types/IArrayFacade.js +0 -3
  135. package/lib/types/IBiDirectIterable.d.ts +0 -5
  136. package/lib/types/IBiDirectIterable.js +0 -3
  137. package/lib/types/IBiDirectIterator.d.ts +0 -11
  138. package/lib/types/IBiDirectIterator.js +0 -3
  139. package/lib/types/IBinaryTree.d.ts +0 -12
  140. package/lib/types/IBinaryTree.js +0 -3
  141. package/lib/types/IConvertableToArray.d.ts +0 -4
  142. package/lib/types/IConvertableToArray.js +0 -3
  143. package/lib/types/IGraph.d.ts +0 -14
  144. package/lib/types/IGraph.js +0 -3
  145. package/lib/types/IGraphIterationStrategy.d.ts +0 -5
  146. package/lib/types/IGraphIterationStrategy.js +0 -3
  147. package/lib/types/IGraphIterator.d.ts +0 -11
  148. package/lib/types/IGraphIterator.js +0 -3
  149. package/lib/types/IIterable.d.ts +0 -4
  150. package/lib/types/IIterable.js +0 -3
  151. package/lib/types/IIterator.d.ts +0 -14
  152. package/lib/types/IIterator.js +0 -3
  153. package/lib/types/IKeyValueStorage.d.ts +0 -8
  154. package/lib/types/IKeyValueStorage.js +0 -3
  155. package/lib/types/ILinearStorage.d.ts +0 -11
  156. package/lib/types/ILinearStorage.js +0 -3
  157. package/lib/types/ILinearStorageRA.d.ts +0 -13
  158. package/lib/types/ILinearStorageRA.js +0 -3
  159. package/lib/types/ILinkedList.d.ts +0 -4
  160. package/lib/types/ILinkedList.js +0 -3
  161. package/lib/utils.d.ts +0 -29
  162. package/lib/utils.js +0 -95
@@ -1,125 +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 when capacity <= 0
15
- */
16
- private static calculateCapacity;
17
- /**
18
- * Will insert node between nodeLeft and nodeRight
19
- * @throws when list is full
20
- */
21
- private insertNodeBetweenTwoNodes;
22
- /**
23
- * Will remove the node from its neighbors nodes links
24
- * @throws when node does not exist
25
- */
26
- private deleteNode;
27
- /**
28
- * Will find node by its index
29
- * @throws when node was not found
30
- */
31
- protected getNodeByIndex(index: number): AbstractLinkedNode<T>;
32
- /**
33
- * Will set links between target, left and right siblings
34
- */
35
- protected abstract insertNodeBetweenTwoNodesImpl(nodeToPush: AbstractLinkedNode<T>, nodeLeft: AbstractLinkedNode<T>, nodeRight: AbstractLinkedNode<T>): void;
36
- /**
37
- * Will unset itself links and its neighbors links
38
- */
39
- protected abstract deleteNodeImpl(node: AbstractLinkedNode<T>): void;
40
- /**
41
- * Update head link
42
- */
43
- protected abstract popImpl(): void;
44
- /**
45
- * Update tail link
46
- */
47
- protected abstract shiftImpl(): void;
48
- /**
49
- * Will create empty node instance
50
- */
51
- protected abstract createNode(value: T): AbstractLinkedNode<T>;
52
- /**
53
- * Push into start
54
- */
55
- unshift(value: T): void;
56
- /**
57
- * Push into end
58
- */
59
- push(value: T): void;
60
- /**
61
- * Push from index
62
- */
63
- pushFromIndex(value: T, fromIndex: number): void;
64
- /**
65
- * Delete node from list's end
66
- */
67
- pop(): T;
68
- /**
69
- * Delete node from list's start and get its data
70
- */
71
- shift(): T;
72
- /**
73
- * Delete node from list by index from start
74
- */
75
- deleteFromIndex(fromIndex: number): T;
76
- /**
77
- * List length
78
- */
79
- length(): number;
80
- /**
81
- * Is list empty
82
- */
83
- isEmpty(): boolean;
84
- /**
85
- * Is list full
86
- */
87
- isFull(): boolean;
88
- /**
89
- * Check if element exists in list
90
- */
91
- has(item: T): boolean;
92
- /**
93
- * Get head element data
94
- * @throws Error when head does not exist
95
- */
96
- peek(): T;
97
- /**
98
- * Get tail element data
99
- * @throws Error when tail does not exists
100
- */
101
- peekFromStart(): T;
102
- /**
103
- * Get list element by index from start
104
- * @throws when element does not exist
105
- */
106
- peekByIndex(index: number): T;
107
- /**
108
- * Remove all elements from list
109
- */
110
- clear(): void;
111
- /**
112
- * Get elements as an array
113
- */
114
- getAsArray(): Array<T>;
115
- /**
116
- * Add elements to list from array
117
- * @throws when list is full
118
- * */
119
- pushFromArray(elements: Array<T>): void;
120
- /**
121
- * Reverse list nodes links and swap head with tail
122
- * @example "4>7>10" will be reversed to "10>7>4"
123
- */
124
- abstract reverse(): void;
125
- }
@@ -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,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RMaW5rZWROb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGEtc3RydWN0dXJlcy9MaW5rZWRMaXN0L0Fic3RyYWN0TGlua2VkTGlzdC9BYnN0cmFjdExpbmtlZE5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTtJQUlFOztPQUVHO0lBQ0gsNEJBQXNCLElBQU8sRUFBRSxJQUF5QztRQUF6QyxxQkFBQSxFQUFBLFdBQXlDO1FBQ3RFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFLRCxzQkFBVyxvQ0FBSTtRQUhmOztXQUVHO2FBQ0g7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxvQ0FBSTtRQUhmOztXQUVHO2FBQ0g7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQztRQUVEOztXQUVHO2FBQ0gsVUFBZ0IsS0FBbUM7WUFDakQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQzs7O09BUEE7SUFRSCx5QkFBQztBQUFELENBQUMsQUFoQ0QsSUFnQ0MifQ==
@@ -1,48 +0,0 @@
1
- import IBiDirectIterator from "../../../types/IBiDirectIterator";
2
- import IBiDirectIterable from "../../../types/IBiDirectIterable";
3
- import AbstractLinkedList from "../AbstractLinkedList/AbstractLinkedList";
4
- import DoubleLinkedNode from "./DoubleLinkedNode";
5
- /**
6
- * Linear data structure
7
- * Each node has next and prev sibling
8
- * Head and tail are linked to each other
9
- */
10
- export default class DoubleLinkedList<T> extends AbstractLinkedList<T> implements IBiDirectIterable<T> {
11
- /**
12
- * Override types
13
- */
14
- protected _head: DoubleLinkedNode<T> | null;
15
- protected _tail: DoubleLinkedNode<T> | null;
16
- /**
17
- * @inheritDoc
18
- */
19
- constructor(capacity?: number);
20
- /**
21
- * @inheritDoc
22
- */
23
- protected createNode(value: T): DoubleLinkedNode<T>;
24
- /**
25
- * @inheritDoc
26
- */
27
- protected insertNodeBetweenTwoNodesImpl(targetNode: DoubleLinkedNode<T>, leftNode: DoubleLinkedNode<T>, rightNode: DoubleLinkedNode<T>): void;
28
- /**
29
- * @inheritDoc
30
- */
31
- protected deleteNodeImpl(node: DoubleLinkedNode<T>): void;
32
- /**
33
- * @inheritDoc
34
- */
35
- protected popImpl(): void;
36
- /**
37
- * @inheritDoc
38
- */
39
- protected shiftImpl(): void;
40
- /**
41
- * @inheritDoc
42
- */
43
- reverse(): void;
44
- /**
45
- * List iterator
46
- */
47
- iterator(fromIndex?: number): IBiDirectIterator<T>;
48
- }
@@ -1,150 +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
- /**
96
- * List iterator
97
- */
98
- DoubleLinkedList.prototype.iterator = function (fromIndex) {
99
- if (fromIndex === void 0) { fromIndex = 0; }
100
- var head = this._head;
101
- var tail = this._tail;
102
- var activeNode = this.getNodeByIndex(fromIndex);
103
- var iterator = {
104
- /**
105
- * @inheritDoc
106
- */
107
- current: function () {
108
- return activeNode.data;
109
- },
110
- /**
111
- * @inheritDoc
112
- */
113
- hasNext: function () {
114
- return Boolean(activeNode.next) && activeNode !== head;
115
- },
116
- /**
117
- * @inheritDoc
118
- */
119
- hasPrev: function () {
120
- return Boolean(activeNode.prev) && activeNode !== tail;
121
- },
122
- /**
123
- * @inheritDoc
124
- * @throws when next element does not exist
125
- */
126
- next: function () {
127
- if (!iterator.hasNext()) {
128
- throw new Error("Next element does not exist");
129
- }
130
- activeNode = activeNode.next;
131
- return activeNode.data;
132
- },
133
- /**
134
- * @inheritDoc
135
- * @throws when prev element does not exists
136
- */
137
- prev: function () {
138
- if (!iterator.hasPrev()) {
139
- throw new Error("Prev element does not exist");
140
- }
141
- activeNode = activeNode.prev;
142
- return activeNode.data;
143
- },
144
- };
145
- return iterator;
146
- };
147
- return DoubleLinkedList;
148
- }(AbstractLinkedList_1.default));
149
- exports.default = DoubleLinkedList;
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG91YmxlTGlua2VkTGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhLXN0cnVjdHVyZXMvTGlua2VkTGlzdC9Eb3VibGVMaW5rZWRMaXN0L0RvdWJsZUxpbmtlZExpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsK0VBQTBFO0FBQzFFLHVEQUFrRDtBQUVsRDs7OztHQUlHO0FBQ0g7SUFDVSxvQ0FBcUI7SUFRN0I7O09BRUc7SUFDSCwwQkFBbUIsUUFBaUI7UUFBcEMsWUFDRSxrQkFBTSxRQUFRLENBQUMsU0FHaEI7UUFGQyxLQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixLQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzs7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ08scUNBQVUsR0FBcEIsVUFBcUIsS0FBUTtRQUMzQixPQUFPLElBQUksMEJBQWdCLENBQUksS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ08sd0RBQTZCLEdBQXZDLFVBQ0UsVUFBK0IsRUFDL0IsUUFBNkIsRUFDN0IsU0FBOEI7UUFFOUIsVUFBVSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFDNUIsVUFBVSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFFM0IsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQ25CLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztTQUNuQztRQUNELElBQUksVUFBVSxDQUFDLElBQUksRUFBRTtZQUNuQixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDTyx5Q0FBYyxHQUF4QixVQUF5QixJQUF5QjtRQUNoRCxJQUFLLENBQUMsSUFBSyxDQUFDLElBQUksR0FBRyxJQUFLLENBQUMsSUFBSSxDQUFDO1FBQzlCLElB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
@@ -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
- }