@raikuxq/alg-ds 1.2.5 → 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.
- package/README.md +0 -25
- package/lib/index.d.ts +1216 -3
- package/lib/index.mjs +1 -0
- package/package.json +78 -72
- package/lib/app/algorithms/binary-search.d.ts +0 -5
- package/lib/app/algorithms/binary-search.js +0 -27
- package/lib/app/algorithms/factorial.d.ts +0 -9
- package/lib/app/algorithms/factorial.js +0 -17
- package/lib/app/algorithms/fibonacci.d.ts +0 -9
- package/lib/app/algorithms/fibonacci.js +0 -17
- package/lib/app/algorithms/graph/iterator/AbstractGraphIterator.d.ts +0 -39
- package/lib/app/algorithms/graph/iterator/AbstractGraphIterator.js +0 -87
- package/lib/app/algorithms/graph/iterator/GraphIteratorBFS.d.ts +0 -28
- package/lib/app/algorithms/graph/iterator/GraphIteratorBFS.js +0 -70
- package/lib/app/algorithms/graph/iterator/GraphIteratorDFS.d.ts +0 -28
- package/lib/app/algorithms/graph/iterator/GraphIteratorDFS.js +0 -70
- package/lib/app/algorithms/graph/iterator/GraphIteratorDijkstra.d.ts +0 -32
- package/lib/app/algorithms/graph/iterator/GraphIteratorDijkstra.js +0 -97
- package/lib/app/algorithms/graph/iterator-strategy/BFSIterationStrategy.d.ts +0 -6
- package/lib/app/algorithms/graph/iterator-strategy/BFSIterationStrategy.js +0 -13
- package/lib/app/algorithms/graph/iterator-strategy/DFSIterationStrategy.d.ts +0 -6
- package/lib/app/algorithms/graph/iterator-strategy/DFSIterationStrategy.js +0 -13
- package/lib/app/algorithms/graph/iterator-strategy/DijkstraIterationStrategy.d.ts +0 -6
- package/lib/app/algorithms/graph/iterator-strategy/DijkstraIterationStrategy.js +0 -13
- package/lib/app/algorithms/graph/presenter/presenterAdjacencyLists.d.ts +0 -19
- package/lib/app/algorithms/graph/presenter/presenterAdjacencyLists.js +0 -28
- package/lib/app/algorithms/graph/presenter/presenterAdjacencyMatrix.d.ts +0 -32
- package/lib/app/algorithms/graph/presenter/presenterAdjacencyMatrix.js +0 -48
- package/lib/app/algorithms/graph/searching/hasPath.d.ts +0 -9
- package/lib/app/algorithms/graph/searching/hasPath.js +0 -30
- package/lib/app/algorithms/graph/searching/shortestPath.d.ts +0 -9
- package/lib/app/algorithms/graph/searching/shortestPath.js +0 -30
- package/lib/app/algorithms/graph/transposing/transposeDirectedGraph.d.ts +0 -2
- package/lib/app/algorithms/graph/transposing/transposeDirectedGraph.js +0 -14
- package/lib/app/algorithms/memoize.d.ts +0 -5
- package/lib/app/algorithms/memoize.js +0 -22
- package/lib/app/algorithms/sorts/bubble-sort.d.ts +0 -9
- package/lib/app/algorithms/sorts/bubble-sort.js +0 -23
- package/lib/app/algorithms/sorts/insertion-sort.d.ts +0 -9
- package/lib/app/algorithms/sorts/insertion-sort.js +0 -25
- package/lib/app/algorithms/sorts/merge-sort.d.ts +0 -9
- package/lib/app/algorithms/sorts/merge-sort.js +0 -61
- package/lib/app/algorithms/sorts/quick-sort.d.ts +0 -9
- package/lib/app/algorithms/sorts/quick-sort.js +0 -45
- package/lib/app/algorithms/sorts/select-sort.d.ts +0 -9
- package/lib/app/algorithms/sorts/select-sort.js +0 -20
- package/lib/app/algorithms/transpose-matrix.d.ts +0 -6
- package/lib/app/algorithms/transpose-matrix.js +0 -19
- package/lib/app/constants.d.ts +0 -2
- package/lib/app/constants.js +0 -6
- package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.d.ts +0 -15
- package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.js +0 -53
- package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.d.ts +0 -60
- package/lib/app/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.js +0 -35
- package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.d.ts +0 -13
- package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.js +0 -59
- package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.d.ts +0 -75
- package/lib/app/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.js +0 -276
- package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.d.ts +0 -16
- package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.js +0 -70
- package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.d.ts +0 -58
- package/lib/app/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.js +0 -236
- package/lib/app/data-structures/BinaryTree/_helpers/createBinaryTree.d.ts +0 -6
- package/lib/app/data-structures/BinaryTree/_helpers/createBinaryTree.js +0 -22
- package/lib/app/data-structures/Graph/AbstractGraph.d.ts +0 -84
- package/lib/app/data-structures/Graph/AbstractGraph.js +0 -143
- package/lib/app/data-structures/Graph/DirectedGraph.d.ts +0 -27
- package/lib/app/data-structures/Graph/DirectedGraph.js +0 -89
- package/lib/app/data-structures/Graph/GraphEdge.d.ts +0 -16
- package/lib/app/data-structures/Graph/GraphEdge.js +0 -43
- package/lib/app/data-structures/Graph/UndirectedGraph.d.ts +0 -31
- package/lib/app/data-structures/Graph/UndirectedGraph.js +0 -106
- package/lib/app/data-structures/Graph/_helpers/createGraph.d.ts +0 -6
- package/lib/app/data-structures/Graph/_helpers/createGraph.js +0 -22
- package/lib/app/data-structures/Graph/_helpers/createGraphFromMatrix.d.ts +0 -7
- package/lib/app/data-structures/Graph/_helpers/createGraphFromMatrix.js +0 -42
- package/lib/app/data-structures/Graph/_helpers/generateRandomGraph.d.ts +0 -4
- package/lib/app/data-structures/Graph/_helpers/generateRandomGraph.js +0 -67
- package/lib/app/data-structures/HashTable/HashTable.d.ts +0 -73
- package/lib/app/data-structures/HashTable/HashTable.js +0 -171
- package/lib/app/data-structures/HashTable/HashTableNode.d.ts +0 -11
- package/lib/app/data-structures/HashTable/HashTableNode.js +0 -39
- package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.d.ts +0 -134
- package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.js +0 -247
- package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.d.ts +0 -20
- package/lib/app/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.js +0 -41
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.d.ts +0 -42
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.js +0 -98
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.d.ts +0 -25
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.js +0 -65
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/IterableDoubleLinkedList.d.ts +0 -18
- package/lib/app/data-structures/LinkedList/DoubleLinkedList/IterableDoubleLinkedList.js +0 -86
- package/lib/app/data-structures/LinkedList/SingleLinkedList/IterableSingleLinkedList.d.ts +0 -18
- package/lib/app/data-structures/LinkedList/SingleLinkedList/IterableSingleLinkedList.js +0 -68
- package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.d.ts +0 -46
- package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.js +0 -103
- package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.d.ts +0 -7
- package/lib/app/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.js +0 -29
- package/lib/app/data-structures/LinkedList/_helpers/createLinkedList.d.ts +0 -3
- package/lib/app/data-structures/LinkedList/_helpers/createLinkedList.js +0 -34
- package/lib/app/data-structures/LoopedArray/LoopedArray.d.ts +0 -86
- package/lib/app/data-structures/LoopedArray/LoopedArray.js +0 -165
- package/lib/app/data-structures/Queue/Queue.d.ts +0 -50
- package/lib/app/data-structures/Queue/Queue.js +0 -85
- package/lib/app/data-structures/Stack/Stack.d.ts +0 -50
- package/lib/app/data-structures/Stack/Stack.js +0 -85
- package/lib/app/exceptions/CollectionIsEmptyException.d.ts +0 -4
- package/lib/app/exceptions/CollectionIsEmptyException.js +0 -28
- package/lib/app/exceptions/CollectionIsFullException.d.ts +0 -4
- package/lib/app/exceptions/CollectionIsFullException.js +0 -28
- package/lib/app/exceptions/IndexOutOfBoundsException.d.ts +0 -4
- package/lib/app/exceptions/IndexOutOfBoundsException.js +0 -28
- package/lib/app/exceptions/IsAlreadyExistsException.d.ts +0 -4
- package/lib/app/exceptions/IsAlreadyExistsException.js +0 -28
- package/lib/app/exceptions/IsNotFoundException.d.ts +0 -4
- package/lib/app/exceptions/IsNotFoundException.js +0 -28
- package/lib/app/exceptions/ValueOutOfRangeException.d.ts +0 -4
- package/lib/app/exceptions/ValueOutOfRangeException.js +0 -28
- package/lib/app/exceptions/base/IllegalArgumentException.d.ts +0 -3
- package/lib/app/exceptions/base/IllegalArgumentException.js +0 -27
- package/lib/app/exceptions/base/IllegalStateException.d.ts +0 -3
- package/lib/app/exceptions/base/IllegalStateException.js +0 -27
- package/lib/app/types/EnumBinarySearchTreeType.d.ts +0 -4
- package/lib/app/types/EnumBinarySearchTreeType.js +0 -9
- package/lib/app/types/EnumGraphTraversalType.d.ts +0 -5
- package/lib/app/types/EnumGraphTraversalType.js +0 -10
- package/lib/app/types/EnumGraphType.d.ts +0 -4
- package/lib/app/types/EnumGraphType.js +0 -9
- package/lib/app/types/EnumLinkedListType.d.ts +0 -4
- package/lib/app/types/EnumLinkedListType.js +0 -9
- package/lib/app/types/EnumRandomGenerationFormat.d.ts +0 -4
- package/lib/app/types/EnumRandomGenerationFormat.js +0 -9
- package/lib/app/types/EnumSortType.d.ts +0 -7
- package/lib/app/types/EnumSortType.js +0 -12
- package/lib/app/types/EnumTreeTraversalType.d.ts +0 -5
- package/lib/app/types/EnumTreeTraversalType.js +0 -10
- package/lib/app/types/FnCompareTwo.d.ts +0 -1
- package/lib/app/types/FnCompareTwo.js +0 -3
- package/lib/app/types/FnToMemoize.d.ts +0 -1
- package/lib/app/types/FnToMemoize.js +0 -3
- package/lib/app/types/IArrayFacade.d.ts +0 -4
- package/lib/app/types/IArrayFacade.js +0 -3
- package/lib/app/types/IBiDirectIterable.d.ts +0 -5
- package/lib/app/types/IBiDirectIterable.js +0 -3
- package/lib/app/types/IBiDirectIterator.d.ts +0 -11
- package/lib/app/types/IBiDirectIterator.js +0 -3
- package/lib/app/types/IBinaryTree.d.ts +0 -12
- package/lib/app/types/IBinaryTree.js +0 -3
- package/lib/app/types/IConvertableToArray.d.ts +0 -4
- package/lib/app/types/IConvertableToArray.js +0 -3
- package/lib/app/types/IGraph.d.ts +0 -14
- package/lib/app/types/IGraph.js +0 -3
- package/lib/app/types/IGraphIterationStrategy.d.ts +0 -5
- package/lib/app/types/IGraphIterationStrategy.js +0 -3
- package/lib/app/types/IGraphIterator.d.ts +0 -11
- package/lib/app/types/IGraphIterator.js +0 -3
- package/lib/app/types/IIterable.d.ts +0 -4
- package/lib/app/types/IIterable.js +0 -3
- package/lib/app/types/IIterator.d.ts +0 -14
- package/lib/app/types/IIterator.js +0 -3
- package/lib/app/types/IKeyValueStorage.d.ts +0 -8
- package/lib/app/types/IKeyValueStorage.js +0 -3
- package/lib/app/types/ILinearStorage.d.ts +0 -11
- package/lib/app/types/ILinearStorage.js +0 -3
- package/lib/app/types/ILinearStorageRA.d.ts +0 -13
- package/lib/app/types/ILinearStorageRA.js +0 -3
- package/lib/app/types/ILinkedList.d.ts +0 -4
- package/lib/app/types/ILinkedList.js +0 -3
- package/lib/app/types/TypeArrayMatrix.d.ts +0 -1
- package/lib/app/types/TypeArrayMatrix.js +0 -3
- package/lib/app/utils.d.ts +0 -29
- package/lib/app/utils.js +0 -61
- package/lib/exports/algorithms.d.ts +0 -16
- package/lib/exports/algorithms.js +0 -36
- package/lib/exports/constants.d.ts +0 -2
- package/lib/exports/constants.js +0 -7
- package/lib/exports/data-structures.d.ts +0 -13
- package/lib/exports/data-structures.js +0 -28
- package/lib/exports/helpers.d.ts +0 -6
- package/lib/exports/helpers.js +0 -14
- package/lib/exports/sorts.d.ts +0 -6
- package/lib/exports/sorts.js +0 -14
- package/lib/exports/types.d.ts +0 -16
- package/lib/exports/types.js +0 -34
- package/lib/exports/utils.d.ts +0 -3
- package/lib/exports/utils.js +0 -12
- package/lib/exports.d.ts +0 -55
- package/lib/exports.js +0 -107
- 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==
|