@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,18 +0,0 @@
|
|
|
1
|
-
import IIterator from "../../../types/IIterator";
|
|
2
|
-
import IIterable from "../../../types/IIterable";
|
|
3
|
-
import SingleLinkedList from "./SingleLinkedList";
|
|
4
|
-
/**
|
|
5
|
-
* @inheritDoc
|
|
6
|
-
*/
|
|
7
|
-
export default class IterableSingleLinkedList<T> extends SingleLinkedList<T> implements IIterable<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): IIterator<T>;
|
|
18
|
-
}
|
|
@@ -1,68 +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 SingleLinkedList_1 = require("./SingleLinkedList");
|
|
18
|
-
/**
|
|
19
|
-
* @inheritDoc
|
|
20
|
-
*/
|
|
21
|
-
var IterableSingleLinkedList = /** @class */ (function (_super) {
|
|
22
|
-
__extends(IterableSingleLinkedList, _super);
|
|
23
|
-
/**
|
|
24
|
-
* @inheritDoc
|
|
25
|
-
*/
|
|
26
|
-
function IterableSingleLinkedList(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
|
-
IterableSingleLinkedList.prototype.iterator = function (fromIndex) {
|
|
35
|
-
if (fromIndex === void 0) { fromIndex = 0; }
|
|
36
|
-
var head = this._head;
|
|
37
|
-
var activeNode = this.getNodeByIndex(fromIndex);
|
|
38
|
-
var iterator = {
|
|
39
|
-
/**
|
|
40
|
-
* @inheritDoc
|
|
41
|
-
*/
|
|
42
|
-
current: function () {
|
|
43
|
-
return activeNode.data;
|
|
44
|
-
},
|
|
45
|
-
/**
|
|
46
|
-
* @inheritDoc
|
|
47
|
-
*/
|
|
48
|
-
hasNext: function () {
|
|
49
|
-
return Boolean(activeNode.next) && activeNode !== head;
|
|
50
|
-
},
|
|
51
|
-
/**
|
|
52
|
-
* @inheritDoc
|
|
53
|
-
* @throws {IsNotFoundException} when next element does not exist
|
|
54
|
-
*/
|
|
55
|
-
next: function () {
|
|
56
|
-
if (!iterator.hasNext()) {
|
|
57
|
-
throw new IsNotFoundException_1.default("Next element does not exist");
|
|
58
|
-
}
|
|
59
|
-
activeNode = activeNode.next;
|
|
60
|
-
return activeNode.data;
|
|
61
|
-
},
|
|
62
|
-
};
|
|
63
|
-
return iterator;
|
|
64
|
-
};
|
|
65
|
-
return IterableSingleLinkedList;
|
|
66
|
-
}(SingleLinkedList_1.default));
|
|
67
|
-
exports.default = IterableSingleLinkedList;
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXRlcmFibGVTaW5nbGVMaW5rZWRMaXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLXN0cnVjdHVyZXMvTGlua2VkTGlzdC9TaW5nbGVMaW5rZWRMaXN0L0l0ZXJhYmxlU2luZ2xlTGlua2VkTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSwrRUFBMEU7QUFDMUUsdURBQWtEO0FBRWxEOztHQUVHO0FBQ0g7SUFDVSw0Q0FBbUI7SUFFM0I7O09BRUc7SUFDSCxrQ0FBbUIsUUFBaUI7ZUFDbEMsa0JBQU0sUUFBUSxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksMkNBQVEsR0FBZixVQUFnQixTQUFhO1FBQWIsMEJBQUEsRUFBQSxhQUFhO1FBQzNCLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxVQUFVLEdBQXdCLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFckUsSUFBTSxRQUFRLEdBQWlCO1lBQzdCOztlQUVHO1lBQ0gsT0FBTyxFQUFFO2dCQUNQLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQztZQUN6QixDQUFDO1lBQ0Q7O2VBRUc7WUFDSCxPQUFPLEVBQVA7Z0JBQ0UsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUM7WUFDekQsQ0FBQztZQUNEOzs7ZUFHRztZQUNILElBQUksRUFBRTtnQkFDSixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUN2QixNQUFNLElBQUksNkJBQW1CLENBQUMsNkJBQTZCLENBQUMsQ0FBQztpQkFDOUQ7Z0JBQ0QsVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFLLENBQUM7Z0JBQzlCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQztZQUN6QixDQUFDO1NBQ0YsQ0FBQztRQUVGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDSCwrQkFBQztBQUFELENBQUMsQUEvQ0QsQ0FDVSwwQkFBZ0IsR0E4Q3pCIn0=
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import AbstractLinkedList from "../AbstractLinkedList/AbstractLinkedList";
|
|
2
|
-
import SingleLinkedNode from "./SingleLinkedNode";
|
|
3
|
-
/**
|
|
4
|
-
* Linear data structure
|
|
5
|
-
* Each node has next
|
|
6
|
-
* Head's next node is tail
|
|
7
|
-
*/
|
|
8
|
-
export default class SingleLinkedList<T> extends AbstractLinkedList<T> {
|
|
9
|
-
/**
|
|
10
|
-
* Override types
|
|
11
|
-
*/
|
|
12
|
-
protected _head: SingleLinkedNode<T> | null;
|
|
13
|
-
protected _tail: SingleLinkedNode<T> | null;
|
|
14
|
-
/**
|
|
15
|
-
* @inheritDoc
|
|
16
|
-
*/
|
|
17
|
-
constructor(capacity?: number);
|
|
18
|
-
/**
|
|
19
|
-
* Find previous sibling of given node
|
|
20
|
-
*/
|
|
21
|
-
private getPrevNode;
|
|
22
|
-
/**
|
|
23
|
-
* @inheritDoc
|
|
24
|
-
*/
|
|
25
|
-
protected createNode(value: T): SingleLinkedNode<T>;
|
|
26
|
-
/**
|
|
27
|
-
* @inheritDoc
|
|
28
|
-
*/
|
|
29
|
-
protected insertNodeBetweenTwoNodesImpl(targetNode: SingleLinkedNode<T>, leftNode: SingleLinkedNode<T>, rightNode: SingleLinkedNode<T>): void;
|
|
30
|
-
/**
|
|
31
|
-
* @inheritDoc
|
|
32
|
-
*/
|
|
33
|
-
protected deleteNodeImpl(node: SingleLinkedNode<T>): void;
|
|
34
|
-
/**
|
|
35
|
-
* @inheritDoc
|
|
36
|
-
*/
|
|
37
|
-
protected popImpl(): void;
|
|
38
|
-
/**
|
|
39
|
-
* @inheritDoc
|
|
40
|
-
*/
|
|
41
|
-
protected shiftImpl(): void;
|
|
42
|
-
/**
|
|
43
|
-
* @inheritDoc
|
|
44
|
-
*/
|
|
45
|
-
reverse(): void;
|
|
46
|
-
}
|
|
@@ -1,103 +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 SingleLinkedNode_1 = require("./SingleLinkedNode");
|
|
18
|
-
/**
|
|
19
|
-
* Linear data structure
|
|
20
|
-
* Each node has next
|
|
21
|
-
* Head's next node is tail
|
|
22
|
-
*/
|
|
23
|
-
var SingleLinkedList = /** @class */ (function (_super) {
|
|
24
|
-
__extends(SingleLinkedList, _super);
|
|
25
|
-
/**
|
|
26
|
-
* @inheritDoc
|
|
27
|
-
*/
|
|
28
|
-
function SingleLinkedList(capacity) {
|
|
29
|
-
var _this = _super.call(this, capacity) || this;
|
|
30
|
-
_this._head = null;
|
|
31
|
-
_this._tail = null;
|
|
32
|
-
return _this;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Find previous sibling of given node
|
|
36
|
-
*/
|
|
37
|
-
SingleLinkedList.prototype.getPrevNode = function (node) {
|
|
38
|
-
var currentNode = this._tail;
|
|
39
|
-
while ((currentNode === null || currentNode === void 0 ? void 0 : currentNode.next) !== node) {
|
|
40
|
-
currentNode = (currentNode === null || currentNode === void 0 ? void 0 : currentNode.next) || null;
|
|
41
|
-
}
|
|
42
|
-
return currentNode;
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* @inheritDoc
|
|
46
|
-
*/
|
|
47
|
-
SingleLinkedList.prototype.createNode = function (value) {
|
|
48
|
-
return new SingleLinkedNode_1.default(value);
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* @inheritDoc
|
|
52
|
-
*/
|
|
53
|
-
SingleLinkedList.prototype.insertNodeBetweenTwoNodesImpl = function (targetNode, leftNode, rightNode) {
|
|
54
|
-
targetNode.next = rightNode;
|
|
55
|
-
if (leftNode) {
|
|
56
|
-
leftNode.next = targetNode;
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* @inheritDoc
|
|
61
|
-
*/
|
|
62
|
-
SingleLinkedList.prototype.deleteNodeImpl = function (node) {
|
|
63
|
-
this.getPrevNode(node).next = node.next;
|
|
64
|
-
node.next = null;
|
|
65
|
-
};
|
|
66
|
-
/**
|
|
67
|
-
* @inheritDoc
|
|
68
|
-
*/
|
|
69
|
-
SingleLinkedList.prototype.popImpl = function () {
|
|
70
|
-
this._head = this.getPrevNode(this._tail);
|
|
71
|
-
};
|
|
72
|
-
/**
|
|
73
|
-
* @inheritDoc
|
|
74
|
-
*/
|
|
75
|
-
SingleLinkedList.prototype.shiftImpl = function () {
|
|
76
|
-
var _a;
|
|
77
|
-
this._tail = ((_a = this._head) === null || _a === void 0 ? void 0 : _a.next) || null;
|
|
78
|
-
};
|
|
79
|
-
/**
|
|
80
|
-
* @inheritDoc
|
|
81
|
-
*/
|
|
82
|
-
SingleLinkedList.prototype.reverse = function () {
|
|
83
|
-
var currentNode = this._tail;
|
|
84
|
-
var prevNode = this._head;
|
|
85
|
-
var index = 0;
|
|
86
|
-
while (index < this._length) {
|
|
87
|
-
var next = (currentNode === null || currentNode === void 0 ? void 0 : currentNode.next) || null;
|
|
88
|
-
if (currentNode) {
|
|
89
|
-
currentNode.next = prevNode;
|
|
90
|
-
}
|
|
91
|
-
index++;
|
|
92
|
-
prevNode = currentNode;
|
|
93
|
-
currentNode = next;
|
|
94
|
-
}
|
|
95
|
-
if (currentNode) {
|
|
96
|
-
this._head = currentNode;
|
|
97
|
-
this._tail = currentNode.next;
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
return SingleLinkedList;
|
|
101
|
-
}(AbstractLinkedList_1.default));
|
|
102
|
-
exports.default = SingleLinkedList;
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xlTGlua2VkTGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1zdHJ1Y3R1cmVzL0xpbmtlZExpc3QvU2luZ2xlTGlua2VkTGlzdC9TaW5nbGVMaW5rZWRMaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtFQUEwRTtBQUMxRSx1REFBa0Q7QUFFbEQ7Ozs7R0FJRztBQUNIO0lBQWlELG9DQUFxQjtJQU9wRTs7T0FFRztJQUNILDBCQUFtQixRQUFpQjtRQUFwQyxZQUNFLGtCQUFNLFFBQVEsQ0FBQyxTQUdoQjtRQUZDLEtBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLEtBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDOztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxzQ0FBVyxHQUFuQixVQUNFLElBQWdDO1FBRWhDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0IsT0FBTyxDQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxJQUFJLE1BQUssSUFBSSxFQUFFO1lBQ2pDLFdBQVcsR0FBRyxDQUFBLFdBQVcsYUFBWCxXQUFXLHVCQUFYLFdBQVcsQ0FBRSxJQUFJLEtBQUksSUFBSSxDQUFDO1NBQ3pDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ08scUNBQVUsR0FBcEIsVUFBcUIsS0FBUTtRQUMzQixPQUFPLElBQUksMEJBQWdCLENBQUksS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ08sd0RBQTZCLEdBQXZDLFVBQ0UsVUFBK0IsRUFDL0IsUUFBNkIsRUFDN0IsU0FBOEI7UUFFOUIsVUFBVSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFFNUIsSUFBSSxRQUFRLEVBQUU7WUFDWixRQUFRLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNPLHlDQUFjLEdBQXhCLFVBQXlCLElBQXlCO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ08sa0NBQU8sR0FBakI7UUFDRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNPLG9DQUFTLEdBQW5COztRQUNFLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBQSxJQUFJLENBQUMsS0FBSywwQ0FBRSxJQUFJLEtBQUksSUFBSSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNJLGtDQUFPLEdBQWQ7UUFDRSxJQUFJLFdBQVcsR0FBK0IsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6RCxJQUFJLFFBQVEsR0FBK0IsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN0RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFZCxPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzNCLElBQU0sSUFBSSxHQUFHLENBQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLElBQUksS0FBSSxJQUFJLENBQUM7WUFFdkMsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsV0FBVyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7YUFDN0I7WUFFRCxLQUFLLEVBQUUsQ0FBQztZQUNSLFFBQVEsR0FBRyxXQUFXLENBQUM7WUFDdkIsV0FBVyxHQUFHLElBQUksQ0FBQztTQUNwQjtRQUVELElBQUksV0FBVyxFQUFFO1lBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7WUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUNILHVCQUFDO0FBQUQsQ0FBQyxBQWxHRCxDQUFpRCw0QkFBa0IsR0FrR2xFIn0=
|
|
@@ -1,29 +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 SingleLinkedNode = /** @class */ (function (_super) {
|
|
18
|
-
__extends(SingleLinkedNode, _super);
|
|
19
|
-
/**
|
|
20
|
-
* @inheritDoc
|
|
21
|
-
*/
|
|
22
|
-
function SingleLinkedNode(data, next) {
|
|
23
|
-
if (next === void 0) { next = null; }
|
|
24
|
-
return _super.call(this, data, next) || this;
|
|
25
|
-
}
|
|
26
|
-
return SingleLinkedNode;
|
|
27
|
-
}(AbstractLinkedNode_1.default));
|
|
28
|
-
exports.default = SingleLinkedNode;
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xlTGlua2VkTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1zdHJ1Y3R1cmVzL0xpbmtlZExpc3QvU2luZ2xlTGlua2VkTGlzdC9TaW5nbGVMaW5rZWROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtFQUEwRTtBQUUxRTtJQUFpRCxvQ0FBcUI7SUFDcEU7O09BRUc7SUFDSCwwQkFBbUIsSUFBTyxFQUFFLElBQXVDO1FBQXZDLHFCQUFBLEVBQUEsV0FBdUM7ZUFDakUsa0JBQU0sSUFBSSxFQUFFLElBQUksQ0FBQztJQUNuQixDQUFDO0lBQ0gsdUJBQUM7QUFBRCxDQUFDLEFBUEQsQ0FBaUQsNEJBQWtCLEdBT2xFIn0=
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createLinkedList = void 0;
|
|
4
|
-
var EnumLinkedListType_1 = require("../../../types/EnumLinkedListType");
|
|
5
|
-
var DoubleLinkedList_1 = require("../DoubleLinkedList/DoubleLinkedList");
|
|
6
|
-
var SingleLinkedList_1 = require("../SingleLinkedList/SingleLinkedList");
|
|
7
|
-
var IterableDoubleLinkedList_1 = require("../DoubleLinkedList/IterableDoubleLinkedList");
|
|
8
|
-
var IterableSingleLinkedList_1 = require("../SingleLinkedList/IterableSingleLinkedList");
|
|
9
|
-
exports.createLinkedList = function (type, isIterable, capacity) {
|
|
10
|
-
if (isIterable === void 0) { isIterable = false; }
|
|
11
|
-
var linkedList;
|
|
12
|
-
if (isIterable) {
|
|
13
|
-
switch (type) {
|
|
14
|
-
case EnumLinkedListType_1.EnumLinkedListType.DOUBLE:
|
|
15
|
-
linkedList = new IterableDoubleLinkedList_1.default(capacity);
|
|
16
|
-
break;
|
|
17
|
-
case EnumLinkedListType_1.EnumLinkedListType.SINGLE:
|
|
18
|
-
linkedList = new IterableSingleLinkedList_1.default(capacity);
|
|
19
|
-
break;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
switch (type) {
|
|
24
|
-
case EnumLinkedListType_1.EnumLinkedListType.DOUBLE:
|
|
25
|
-
linkedList = new DoubleLinkedList_1.default(capacity);
|
|
26
|
-
break;
|
|
27
|
-
case EnumLinkedListType_1.EnumLinkedListType.SINGLE:
|
|
28
|
-
linkedList = new SingleLinkedList_1.default(capacity);
|
|
29
|
-
break;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return linkedList;
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTGlua2VkTGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1zdHJ1Y3R1cmVzL0xpbmtlZExpc3QvX2hlbHBlcnMvY3JlYXRlTGlua2VkTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3RUFBdUU7QUFDdkUseUVBQW9FO0FBQ3BFLHlFQUFvRTtBQUNwRSx5RkFBb0Y7QUFDcEYseUZBQW9GO0FBR3ZFLFFBQUEsZ0JBQWdCLEdBQUcsVUFDOUIsSUFBd0IsRUFDeEIsVUFBa0IsRUFDbEIsUUFBaUI7SUFEakIsMkJBQUEsRUFBQSxrQkFBa0I7SUFHbEIsSUFBSSxVQUEwQixDQUFDO0lBRS9CLElBQUksVUFBVSxFQUFFO1FBQ2QsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLHVDQUFrQixDQUFDLE1BQU07Z0JBQzVCLFVBQVUsR0FBRyxJQUFJLGtDQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwRCxNQUFNO1lBQ1IsS0FBSyx1Q0FBa0IsQ0FBQyxNQUFNO2dCQUM1QixVQUFVLEdBQUcsSUFBSSxrQ0FBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEQsTUFBTTtTQUNUO0tBQ0Y7U0FBTTtRQUNMLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyx1Q0FBa0IsQ0FBQyxNQUFNO2dCQUM1QixVQUFVLEdBQUcsSUFBSSwwQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUMsTUFBTTtZQUNSLEtBQUssdUNBQWtCLENBQUMsTUFBTTtnQkFDNUIsVUFBVSxHQUFHLElBQUksMEJBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVDLE1BQU07U0FDVDtLQUNGO0lBRUQsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyxDQUFDIn0=
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import IArrayFacade from "../../types/IArrayFacade";
|
|
2
|
-
/**
|
|
3
|
-
* Linear data structure
|
|
4
|
-
* Facade above array
|
|
5
|
-
* After reaching full array new pushed elements will be overwritten over old elements
|
|
6
|
-
*/
|
|
7
|
-
export default class LoopedArray<T> implements IArrayFacade<T> {
|
|
8
|
-
private readonly _capacity;
|
|
9
|
-
private _realLength;
|
|
10
|
-
private _array;
|
|
11
|
-
/**
|
|
12
|
-
* Create empty instance
|
|
13
|
-
* @throws {ValueOutOfRangeException} when given capacity is not valid
|
|
14
|
-
*/
|
|
15
|
-
constructor(capacity: number);
|
|
16
|
-
/**
|
|
17
|
-
* Push into end
|
|
18
|
-
*/
|
|
19
|
-
push(value: T): void;
|
|
20
|
-
/**
|
|
21
|
-
* Push into start
|
|
22
|
-
*/
|
|
23
|
-
unshift(value: T): void;
|
|
24
|
-
/**
|
|
25
|
-
* Delete node from array's end
|
|
26
|
-
* @throws {CollectionIsEmptyException} when array is empty
|
|
27
|
-
*/
|
|
28
|
-
pop(): T;
|
|
29
|
-
/**
|
|
30
|
-
* Delete node from array's start
|
|
31
|
-
* @throws {CollectionIsEmptyException} when array is empty
|
|
32
|
-
*/
|
|
33
|
-
shift(): T;
|
|
34
|
-
/**
|
|
35
|
-
* Get head element data
|
|
36
|
-
*/
|
|
37
|
-
peek(): T;
|
|
38
|
-
/**
|
|
39
|
-
* Get tail element data
|
|
40
|
-
*/
|
|
41
|
-
peekFromStart(): T;
|
|
42
|
-
/**
|
|
43
|
-
* Get array element by index from start
|
|
44
|
-
*/
|
|
45
|
-
peekByIndex(index: number): T;
|
|
46
|
-
/**
|
|
47
|
-
* Push from index
|
|
48
|
-
*/
|
|
49
|
-
pushFromIndex(value: T, fromIndex: number): void;
|
|
50
|
-
/**
|
|
51
|
-
* Get elements as array
|
|
52
|
-
*/
|
|
53
|
-
getAsArray(): Array<T>;
|
|
54
|
-
/**
|
|
55
|
-
* Check if element exists in array
|
|
56
|
-
*/
|
|
57
|
-
has(item: T): boolean;
|
|
58
|
-
/**
|
|
59
|
-
* Is array empty
|
|
60
|
-
*/
|
|
61
|
-
isEmpty(): boolean;
|
|
62
|
-
/**
|
|
63
|
-
* Is array full
|
|
64
|
-
*/
|
|
65
|
-
isFull(): boolean;
|
|
66
|
-
/**
|
|
67
|
-
* List length
|
|
68
|
-
*/
|
|
69
|
-
length(): number;
|
|
70
|
-
/**
|
|
71
|
-
* Remove all elements from array
|
|
72
|
-
*/
|
|
73
|
-
clear(): void;
|
|
74
|
-
/**
|
|
75
|
-
* Delete node from array by index from start
|
|
76
|
-
*/
|
|
77
|
-
deleteFromIndex(fromIndex: number): T;
|
|
78
|
-
/**
|
|
79
|
-
* Add elements to array from array
|
|
80
|
-
* */
|
|
81
|
-
pushFromArray(elements: Array<T>): void;
|
|
82
|
-
/**
|
|
83
|
-
* Reverse array nodes links and swap head with tail
|
|
84
|
-
*/
|
|
85
|
-
reverse(): void;
|
|
86
|
-
}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var ValueOutOfRangeException_1 = require("../../exceptions/ValueOutOfRangeException");
|
|
4
|
-
var CollectionIsEmptyException_1 = require("../../exceptions/CollectionIsEmptyException");
|
|
5
|
-
/**
|
|
6
|
-
* Linear data structure
|
|
7
|
-
* Facade above array
|
|
8
|
-
* After reaching full array new pushed elements will be overwritten over old elements
|
|
9
|
-
*/
|
|
10
|
-
var LoopedArray = /** @class */ (function () {
|
|
11
|
-
/**
|
|
12
|
-
* Create empty instance
|
|
13
|
-
* @throws {ValueOutOfRangeException} when given capacity is not valid
|
|
14
|
-
*/
|
|
15
|
-
function LoopedArray(capacity) {
|
|
16
|
-
this._realLength = 0;
|
|
17
|
-
if (capacity <= 0) {
|
|
18
|
-
throw new ValueOutOfRangeException_1.default("Capacity must be larger than 0");
|
|
19
|
-
}
|
|
20
|
-
this._capacity = capacity;
|
|
21
|
-
this._array = new Array(0);
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Push into end
|
|
25
|
-
*/
|
|
26
|
-
LoopedArray.prototype.push = function (value) {
|
|
27
|
-
if (this._realLength % this._capacity === 0) {
|
|
28
|
-
this._array = new Array(0);
|
|
29
|
-
}
|
|
30
|
-
this._realLength++;
|
|
31
|
-
if (!this.isFull()) {
|
|
32
|
-
this._array.push(value);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
var indexToPush = (this._realLength % this._capacity) - 1;
|
|
36
|
-
this._array.splice(indexToPush, 1, value);
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
/**
|
|
40
|
-
* Push into start
|
|
41
|
-
*/
|
|
42
|
-
LoopedArray.prototype.unshift = function (value) {
|
|
43
|
-
if (this._realLength % this._capacity === 0) {
|
|
44
|
-
this._array = new Array(0);
|
|
45
|
-
}
|
|
46
|
-
this._realLength++;
|
|
47
|
-
if (!this.isFull()) {
|
|
48
|
-
this._array.unshift(value);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
this._array.splice(this._capacity - 1);
|
|
52
|
-
this._array.unshift(value);
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* Delete node from array's end
|
|
57
|
-
* @throws {CollectionIsEmptyException} when array is empty
|
|
58
|
-
*/
|
|
59
|
-
LoopedArray.prototype.pop = function () {
|
|
60
|
-
if (this.isEmpty()) {
|
|
61
|
-
throw new CollectionIsEmptyException_1.default("cannot delete because array is empty");
|
|
62
|
-
}
|
|
63
|
-
this._realLength--;
|
|
64
|
-
var deletedItem = this._array.pop();
|
|
65
|
-
return deletedItem;
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* Delete node from array's start
|
|
69
|
-
* @throws {CollectionIsEmptyException} when array is empty
|
|
70
|
-
*/
|
|
71
|
-
LoopedArray.prototype.shift = function () {
|
|
72
|
-
if (this.isEmpty()) {
|
|
73
|
-
throw new CollectionIsEmptyException_1.default("cannot delete because array is empty");
|
|
74
|
-
}
|
|
75
|
-
this._realLength--;
|
|
76
|
-
var deletedItem = this._array.shift();
|
|
77
|
-
return deletedItem;
|
|
78
|
-
};
|
|
79
|
-
/**
|
|
80
|
-
* Get head element data
|
|
81
|
-
*/
|
|
82
|
-
LoopedArray.prototype.peek = function () {
|
|
83
|
-
return this._array[this._array.length - 1];
|
|
84
|
-
};
|
|
85
|
-
/**
|
|
86
|
-
* Get tail element data
|
|
87
|
-
*/
|
|
88
|
-
LoopedArray.prototype.peekFromStart = function () {
|
|
89
|
-
return this._array[0];
|
|
90
|
-
};
|
|
91
|
-
/**
|
|
92
|
-
* Get array element by index from start
|
|
93
|
-
*/
|
|
94
|
-
LoopedArray.prototype.peekByIndex = function (index) {
|
|
95
|
-
return this._array[index];
|
|
96
|
-
};
|
|
97
|
-
/**
|
|
98
|
-
* Push from index
|
|
99
|
-
*/
|
|
100
|
-
LoopedArray.prototype.pushFromIndex = function (value, fromIndex) {
|
|
101
|
-
this._array[fromIndex] = value;
|
|
102
|
-
};
|
|
103
|
-
/**
|
|
104
|
-
* Get elements as array
|
|
105
|
-
*/
|
|
106
|
-
LoopedArray.prototype.getAsArray = function () {
|
|
107
|
-
return this._array;
|
|
108
|
-
};
|
|
109
|
-
/**
|
|
110
|
-
* Check if element exists in array
|
|
111
|
-
*/
|
|
112
|
-
LoopedArray.prototype.has = function (item) {
|
|
113
|
-
return this._array.includes(item);
|
|
114
|
-
};
|
|
115
|
-
/**
|
|
116
|
-
* Is array empty
|
|
117
|
-
*/
|
|
118
|
-
LoopedArray.prototype.isEmpty = function () {
|
|
119
|
-
return this._array.length === 0;
|
|
120
|
-
};
|
|
121
|
-
/**
|
|
122
|
-
* Is array full
|
|
123
|
-
*/
|
|
124
|
-
LoopedArray.prototype.isFull = function () {
|
|
125
|
-
return this._array.length >= this._capacity;
|
|
126
|
-
};
|
|
127
|
-
/**
|
|
128
|
-
* List length
|
|
129
|
-
*/
|
|
130
|
-
LoopedArray.prototype.length = function () {
|
|
131
|
-
return this._array.length;
|
|
132
|
-
};
|
|
133
|
-
/**
|
|
134
|
-
* Remove all elements from array
|
|
135
|
-
*/
|
|
136
|
-
LoopedArray.prototype.clear = function () {
|
|
137
|
-
this._array = new Array(0);
|
|
138
|
-
};
|
|
139
|
-
/**
|
|
140
|
-
* Delete node from array by index from start
|
|
141
|
-
*/
|
|
142
|
-
LoopedArray.prototype.deleteFromIndex = function (fromIndex) {
|
|
143
|
-
var deletedElement = this._array[fromIndex];
|
|
144
|
-
delete this._array[fromIndex];
|
|
145
|
-
return deletedElement;
|
|
146
|
-
};
|
|
147
|
-
/**
|
|
148
|
-
* Add elements to array from array
|
|
149
|
-
* */
|
|
150
|
-
LoopedArray.prototype.pushFromArray = function (elements) {
|
|
151
|
-
var _this = this;
|
|
152
|
-
elements.forEach(function (element) {
|
|
153
|
-
_this.push(element);
|
|
154
|
-
});
|
|
155
|
-
};
|
|
156
|
-
/**
|
|
157
|
-
* Reverse array nodes links and swap head with tail
|
|
158
|
-
*/
|
|
159
|
-
LoopedArray.prototype.reverse = function () {
|
|
160
|
-
this._array = this._array.reverse();
|
|
161
|
-
};
|
|
162
|
-
return LoopedArray;
|
|
163
|
-
}());
|
|
164
|
-
exports.default = LoopedArray;
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9vcGVkQXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2RhdGEtc3RydWN0dXJlcy9Mb29wZWRBcnJheS9Mb29wZWRBcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHNGQUFpRjtBQUVqRiwwRkFBcUY7QUFFckY7Ozs7R0FJRztBQUNIO0lBS0U7OztPQUdHO0lBQ0gscUJBQVksUUFBZ0I7UUFQcEIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFRdEIsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxrQ0FBd0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQ3RFO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBSSxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSwwQkFBSSxHQUFYLFVBQVksS0FBUTtRQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBSSxDQUFDLENBQUMsQ0FBQztTQUMvQjtRQUVELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO2FBQU07WUFDTCxJQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJ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
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import ILinearStorage from "../../types/ILinearStorage";
|
|
2
|
-
/**
|
|
3
|
-
* FIFO data structure
|
|
4
|
-
*/
|
|
5
|
-
export default class Queue<T> implements ILinearStorage<T> {
|
|
6
|
-
private readonly _list;
|
|
7
|
-
/**
|
|
8
|
-
* Create a queue instance
|
|
9
|
-
*/
|
|
10
|
-
constructor(capacity?: number);
|
|
11
|
-
/**
|
|
12
|
-
* Get first element in queue (without deleting)
|
|
13
|
-
* @throws {CollectionIsEmptyException} when list is empty
|
|
14
|
-
*/
|
|
15
|
-
peek(): T;
|
|
16
|
-
/**
|
|
17
|
-
* Add element to queue
|
|
18
|
-
* @throws {CollectionIsFullException} when list is full
|
|
19
|
-
*/
|
|
20
|
-
push(item: T): void;
|
|
21
|
-
/**
|
|
22
|
-
* Delete first element in queue
|
|
23
|
-
* @throws {CollectionIsEmptyException} when list is empty
|
|
24
|
-
*/
|
|
25
|
-
pop(): T;
|
|
26
|
-
/**
|
|
27
|
-
* Check if element exists in list
|
|
28
|
-
*/
|
|
29
|
-
has(item: T): boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Is queue empty
|
|
32
|
-
*/
|
|
33
|
-
isEmpty(): boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Is stack full
|
|
36
|
-
*/
|
|
37
|
-
isFull(): boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Remove all elements in queue
|
|
40
|
-
*/
|
|
41
|
-
clear(): void;
|
|
42
|
-
/**
|
|
43
|
-
* Queue length
|
|
44
|
-
*/
|
|
45
|
-
length(): number;
|
|
46
|
-
/**
|
|
47
|
-
* Reverse queue
|
|
48
|
-
*/
|
|
49
|
-
reverse(): void;
|
|
50
|
-
}
|