data-structure-typed 1.34.7 → 1.34.9
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/.eslintrc.js +1 -0
- package/CHANGELOG.md +1 -1
- package/CONTRIBUTING.md +0 -0
- package/README.md +8 -8
- package/dist/data-structures/binary-tree/aa-tree.js +2 -5
- package/dist/data-structures/binary-tree/aa-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/abstract-binary-tree.js +314 -457
- package/dist/data-structures/binary-tree/abstract-binary-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/avl-tree.js +64 -90
- package/dist/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/b-tree.js +2 -5
- package/dist/data-structures/binary-tree/b-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/binary-indexed-tree.js +17 -22
- package/dist/data-structures/binary-tree/binary-indexed-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/binary-tree.js +12 -31
- package/dist/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/bst.js +157 -244
- package/dist/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/data-structures/binary-tree/rb-tree.js +20 -44
- package/dist/data-structures/binary-tree/rb-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/segment-tree.js +80 -122
- package/dist/data-structures/binary-tree/segment-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/splay-tree.js +2 -5
- package/dist/data-structures/binary-tree/splay-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/tree-multiset.js +168 -239
- package/dist/data-structures/binary-tree/tree-multiset.js.map +1 -1
- package/dist/data-structures/binary-tree/two-three-tree.js +2 -5
- package/dist/data-structures/binary-tree/two-three-tree.js.map +1 -1
- package/dist/data-structures/graph/abstract-graph.js +351 -585
- package/dist/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/data-structures/graph/directed-graph.js +152 -282
- package/dist/data-structures/graph/directed-graph.js.map +1 -1
- package/dist/data-structures/graph/map-graph.js +47 -88
- package/dist/data-structures/graph/map-graph.js.map +1 -1
- package/dist/data-structures/graph/undirected-graph.js +91 -180
- package/dist/data-structures/graph/undirected-graph.js.map +1 -1
- package/dist/data-structures/hash/coordinate-map.js +23 -45
- package/dist/data-structures/hash/coordinate-map.js.map +1 -1
- package/dist/data-structures/hash/coordinate-set.js +20 -42
- package/dist/data-structures/hash/coordinate-set.js.map +1 -1
- package/dist/data-structures/hash/hash-map.js +85 -247
- package/dist/data-structures/hash/hash-map.js.map +1 -1
- package/dist/data-structures/hash/hash-table.js +87 -128
- package/dist/data-structures/hash/hash-table.js.map +1 -1
- package/dist/data-structures/hash/pair.js +2 -5
- package/dist/data-structures/hash/pair.js.map +1 -1
- package/dist/data-structures/hash/tree-map.js +2 -5
- package/dist/data-structures/hash/tree-map.js.map +1 -1
- package/dist/data-structures/hash/tree-set.js +2 -5
- package/dist/data-structures/hash/tree-set.js.map +1 -1
- package/dist/data-structures/heap/heap.js +56 -80
- package/dist/data-structures/heap/heap.js.map +1 -1
- package/dist/data-structures/heap/max-heap.js +8 -26
- package/dist/data-structures/heap/max-heap.js.map +1 -1
- package/dist/data-structures/heap/min-heap.js +8 -26
- package/dist/data-structures/heap/min-heap.js.map +1 -1
- package/dist/data-structures/linked-list/doubly-linked-list.js +149 -218
- package/dist/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/data-structures/linked-list/singly-linked-list.js +119 -218
- package/dist/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/data-structures/linked-list/skip-linked-list.js +50 -70
- package/dist/data-structures/linked-list/skip-linked-list.js.map +1 -1
- package/dist/data-structures/matrix/matrix.js +7 -8
- package/dist/data-structures/matrix/matrix.js.map +1 -1
- package/dist/data-structures/matrix/matrix2d.js +57 -70
- package/dist/data-structures/matrix/matrix2d.js.map +1 -1
- package/dist/data-structures/matrix/navigator.js +18 -37
- package/dist/data-structures/matrix/navigator.js.map +1 -1
- package/dist/data-structures/matrix/vector2d.js +63 -84
- package/dist/data-structures/matrix/vector2d.js.map +1 -1
- package/dist/data-structures/priority-queue/max-priority-queue.js +13 -41
- package/dist/data-structures/priority-queue/max-priority-queue.js.map +1 -1
- package/dist/data-structures/priority-queue/min-priority-queue.js +13 -41
- package/dist/data-structures/priority-queue/min-priority-queue.js.map +1 -1
- package/dist/data-structures/priority-queue/priority-queue.js +93 -139
- package/dist/data-structures/priority-queue/priority-queue.js.map +1 -1
- package/dist/data-structures/queue/deque.js +82 -128
- package/dist/data-structures/queue/deque.js.map +1 -1
- package/dist/data-structures/queue/queue.js +57 -157
- package/dist/data-structures/queue/queue.js.map +1 -1
- package/dist/data-structures/stack/stack.js +21 -22
- package/dist/data-structures/stack/stack.js.map +1 -1
- package/dist/data-structures/tree/tree.js +33 -46
- package/dist/data-structures/tree/tree.js.map +1 -1
- package/dist/data-structures/trie/trie.js +93 -200
- package/dist/data-structures/trie/trie.js.map +1 -1
- package/dist/types/data-structures/abstract-binary-tree.js.map +1 -1
- package/dist/utils/utils.js +22 -107
- package/dist/utils/utils.js.map +1 -1
- package/lib/data-structures/binary-tree/abstract-binary-tree.d.ts +124 -123
- package/lib/data-structures/binary-tree/abstract-binary-tree.js +136 -216
- package/lib/data-structures/binary-tree/avl-tree.d.ts +19 -10
- package/lib/data-structures/binary-tree/avl-tree.js +35 -13
- package/lib/data-structures/binary-tree/binary-tree.d.ts +6 -6
- package/lib/data-structures/binary-tree/binary-tree.js +7 -7
- package/lib/data-structures/binary-tree/bst.d.ts +34 -34
- package/lib/data-structures/binary-tree/bst.js +86 -89
- package/lib/data-structures/binary-tree/rb-tree.d.ts +3 -3
- package/lib/data-structures/binary-tree/rb-tree.js +4 -4
- package/lib/data-structures/binary-tree/tree-multiset.d.ts +40 -42
- package/lib/data-structures/binary-tree/tree-multiset.js +76 -86
- package/lib/data-structures/graph/abstract-graph.d.ts +62 -62
- package/lib/data-structures/graph/abstract-graph.js +86 -86
- package/lib/data-structures/graph/directed-graph.d.ts +51 -51
- package/lib/data-structures/graph/directed-graph.js +63 -63
- package/lib/data-structures/graph/map-graph.d.ts +13 -13
- package/lib/data-structures/graph/map-graph.js +12 -12
- package/lib/data-structures/graph/undirected-graph.d.ts +30 -30
- package/lib/data-structures/graph/undirected-graph.js +32 -32
- package/lib/data-structures/priority-queue/priority-queue.d.ts +3 -3
- package/lib/data-structures/priority-queue/priority-queue.js +3 -3
- package/lib/data-structures/tree/tree.d.ts +4 -4
- package/lib/data-structures/tree/tree.js +6 -6
- package/lib/interfaces/abstract-binary-tree.d.ts +37 -42
- package/lib/interfaces/abstract-graph.d.ts +13 -13
- package/lib/interfaces/avl-tree.d.ts +6 -4
- package/lib/interfaces/bst.d.ts +10 -9
- package/lib/interfaces/directed-graph.d.ts +5 -5
- package/lib/interfaces/rb-tree.d.ts +2 -2
- package/lib/interfaces/undirected-graph.d.ts +2 -2
- package/lib/types/data-structures/abstract-binary-tree.d.ts +3 -3
- package/lib/types/data-structures/abstract-binary-tree.js +0 -1
- package/lib/types/data-structures/abstract-graph.d.ts +2 -2
- package/lib/types/data-structures/bst.d.ts +2 -2
- package/lib/types/data-structures/tree-multiset.d.ts +1 -1
- package/lib/types/utils/validate-type.d.ts +8 -8
- package/package.json +6 -6
- package/scripts/rename_clear_files.sh +29 -0
- package/src/data-structures/binary-tree/abstract-binary-tree.ts +241 -293
- package/src/data-structures/binary-tree/avl-tree.ts +43 -14
- package/src/data-structures/binary-tree/binary-tree.ts +8 -8
- package/src/data-structures/binary-tree/bst.ts +101 -96
- package/src/data-structures/binary-tree/rb-tree.ts +9 -9
- package/src/data-structures/binary-tree/tree-multiset.ts +82 -94
- package/src/data-structures/graph/abstract-graph.ts +114 -109
- package/src/data-structures/graph/directed-graph.ts +77 -77
- package/src/data-structures/graph/map-graph.ts +20 -15
- package/src/data-structures/graph/undirected-graph.ts +39 -39
- package/src/data-structures/priority-queue/priority-queue.ts +3 -3
- package/src/data-structures/tree/tree.ts +7 -7
- package/src/interfaces/abstract-binary-tree.ts +37 -50
- package/src/interfaces/abstract-graph.ts +13 -13
- package/src/interfaces/avl-tree.ts +6 -4
- package/src/interfaces/bst.ts +9 -9
- package/src/interfaces/directed-graph.ts +5 -5
- package/src/interfaces/rb-tree.ts +2 -2
- package/src/interfaces/undirected-graph.ts +2 -2
- package/src/types/data-structures/abstract-binary-tree.ts +3 -4
- package/src/types/data-structures/abstract-graph.ts +2 -2
- package/src/types/data-structures/bst.ts +2 -2
- package/src/types/data-structures/tree-multiset.ts +1 -1
- package/src/types/utils/validate-type.ts +10 -10
- package/test/integration/avl-tree.test.ts +24 -24
- package/test/integration/bst.test.ts +71 -71
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +28 -28
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +4 -12
- package/test/unit/data-structures/binary-tree/bst.test.ts +79 -79
- package/test/unit/data-structures/binary-tree/overall.test.ts +20 -20
- package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +80 -80
- package/test/unit/data-structures/graph/directed-graph.test.ts +8 -8
- package/test/unit/data-structures/graph/map-graph.test.ts +4 -4
- package/test/unit/data-structures/graph/overall.test.ts +2 -2
- package/test/unit/data-structures/graph/undirected-graph.test.ts +1 -1
- package/test/unit/data-structures/priority-queue/priority-queue.test.ts +4 -5
- package/test/unit/data-structures/tree/tree.test.ts +2 -2
- package/umd/bundle.min.js +1 -1
- package/umd/bundle.min.js.map +1 -1
|
@@ -1,144 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
3
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
4
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
5
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
6
|
-
function step(op) {
|
|
7
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
8
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
9
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
10
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
11
|
-
switch (op[0]) {
|
|
12
|
-
case 0: case 1: t = op; break;
|
|
13
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
14
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
15
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
16
|
-
default:
|
|
17
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
18
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
19
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
20
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
21
|
-
if (t[2]) _.ops.pop();
|
|
22
|
-
_.trys.pop(); continue;
|
|
23
|
-
}
|
|
24
|
-
op = body.call(thisArg, _);
|
|
25
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
26
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
var __values = (this && this.__values) || function(o) {
|
|
30
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
31
|
-
if (m) return m.call(o);
|
|
32
|
-
if (o && typeof o.length === "number") return {
|
|
33
|
-
next: function () {
|
|
34
|
-
if (o && i >= o.length) o = void 0;
|
|
35
|
-
return { value: o && o[i++], done: !o };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
39
|
-
};
|
|
40
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
41
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
42
|
-
if (!m) return o;
|
|
43
|
-
var i = m.call(o), r, ar = [], e;
|
|
44
|
-
try {
|
|
45
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
46
|
-
}
|
|
47
|
-
catch (error) { e = { error: error }; }
|
|
48
|
-
finally {
|
|
49
|
-
try {
|
|
50
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
51
|
-
}
|
|
52
|
-
finally { if (e) throw e.error; }
|
|
53
|
-
}
|
|
54
|
-
return ar;
|
|
55
|
-
};
|
|
56
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57
3
|
exports.SinglyLinkedList = exports.SinglyLinkedListNode = void 0;
|
|
58
|
-
|
|
59
|
-
|
|
4
|
+
class SinglyLinkedListNode {
|
|
5
|
+
constructor(val) {
|
|
60
6
|
this._val = val;
|
|
61
7
|
this._next = null;
|
|
62
8
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
},
|
|
77
|
-
set: function (value) {
|
|
78
|
-
this._next = value;
|
|
79
|
-
},
|
|
80
|
-
enumerable: false,
|
|
81
|
-
configurable: true
|
|
82
|
-
});
|
|
83
|
-
return SinglyLinkedListNode;
|
|
84
|
-
}());
|
|
9
|
+
get val() {
|
|
10
|
+
return this._val;
|
|
11
|
+
}
|
|
12
|
+
set val(value) {
|
|
13
|
+
this._val = value;
|
|
14
|
+
}
|
|
15
|
+
get next() {
|
|
16
|
+
return this._next;
|
|
17
|
+
}
|
|
18
|
+
set next(value) {
|
|
19
|
+
this._next = value;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
85
22
|
exports.SinglyLinkedListNode = SinglyLinkedListNode;
|
|
86
|
-
|
|
87
|
-
|
|
23
|
+
class SinglyLinkedList {
|
|
24
|
+
constructor() {
|
|
88
25
|
this._head = null;
|
|
89
26
|
this._tail = null;
|
|
90
27
|
this._length = 0;
|
|
91
28
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
});
|
|
112
|
-
Object.defineProperty(SinglyLinkedList.prototype, "length", {
|
|
113
|
-
get: function () {
|
|
114
|
-
return this._length;
|
|
115
|
-
},
|
|
116
|
-
enumerable: false,
|
|
117
|
-
configurable: true
|
|
118
|
-
});
|
|
119
|
-
SinglyLinkedList.fromArray = function (data) {
|
|
120
|
-
var e_1, _a;
|
|
121
|
-
var singlyLinkedList = new SinglyLinkedList();
|
|
122
|
-
try {
|
|
123
|
-
for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {
|
|
124
|
-
var item = data_1_1.value;
|
|
125
|
-
singlyLinkedList.push(item);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
129
|
-
finally {
|
|
130
|
-
try {
|
|
131
|
-
if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);
|
|
132
|
-
}
|
|
133
|
-
finally { if (e_1) throw e_1.error; }
|
|
29
|
+
get head() {
|
|
30
|
+
return this._head;
|
|
31
|
+
}
|
|
32
|
+
set head(value) {
|
|
33
|
+
this._head = value;
|
|
34
|
+
}
|
|
35
|
+
get tail() {
|
|
36
|
+
return this._tail;
|
|
37
|
+
}
|
|
38
|
+
set tail(value) {
|
|
39
|
+
this._tail = value;
|
|
40
|
+
}
|
|
41
|
+
get length() {
|
|
42
|
+
return this._length;
|
|
43
|
+
}
|
|
44
|
+
static fromArray(data) {
|
|
45
|
+
const singlyLinkedList = new SinglyLinkedList();
|
|
46
|
+
for (const item of data) {
|
|
47
|
+
singlyLinkedList.push(item);
|
|
134
48
|
}
|
|
135
49
|
return singlyLinkedList;
|
|
136
|
-
}
|
|
137
|
-
|
|
50
|
+
}
|
|
51
|
+
getLength() {
|
|
138
52
|
return this._length;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
|
|
53
|
+
}
|
|
54
|
+
push(data) {
|
|
55
|
+
const newNode = new SinglyLinkedListNode(data);
|
|
142
56
|
if (!this.head) {
|
|
143
57
|
this.head = newNode;
|
|
144
58
|
this.tail = newNode;
|
|
@@ -148,37 +62,37 @@ var SinglyLinkedList = (function () {
|
|
|
148
62
|
this.tail = newNode;
|
|
149
63
|
}
|
|
150
64
|
this._length++;
|
|
151
|
-
}
|
|
152
|
-
|
|
65
|
+
}
|
|
66
|
+
pop() {
|
|
153
67
|
if (!this.head)
|
|
154
68
|
return undefined;
|
|
155
69
|
if (this.head === this.tail) {
|
|
156
|
-
|
|
70
|
+
const val = this.head.val;
|
|
157
71
|
this.head = null;
|
|
158
72
|
this.tail = null;
|
|
159
73
|
this._length--;
|
|
160
|
-
return
|
|
74
|
+
return val;
|
|
161
75
|
}
|
|
162
|
-
|
|
76
|
+
let current = this.head;
|
|
163
77
|
while (current.next !== this.tail) {
|
|
164
78
|
current = current.next;
|
|
165
79
|
}
|
|
166
|
-
|
|
80
|
+
const val = this.tail.val;
|
|
167
81
|
current.next = null;
|
|
168
82
|
this.tail = current;
|
|
169
83
|
this._length--;
|
|
170
84
|
return val;
|
|
171
|
-
}
|
|
172
|
-
|
|
85
|
+
}
|
|
86
|
+
shift() {
|
|
173
87
|
if (!this.head)
|
|
174
88
|
return undefined;
|
|
175
|
-
|
|
89
|
+
const removedNode = this.head;
|
|
176
90
|
this.head = this.head.next;
|
|
177
91
|
this._length--;
|
|
178
92
|
return removedNode.val;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
|
|
93
|
+
}
|
|
94
|
+
unshift(val) {
|
|
95
|
+
const newNode = new SinglyLinkedListNode(val);
|
|
182
96
|
if (!this.head) {
|
|
183
97
|
this.head = newNode;
|
|
184
98
|
this.tail = newNode;
|
|
@@ -188,45 +102,45 @@ var SinglyLinkedList = (function () {
|
|
|
188
102
|
this.head = newNode;
|
|
189
103
|
}
|
|
190
104
|
this._length++;
|
|
191
|
-
}
|
|
192
|
-
|
|
105
|
+
}
|
|
106
|
+
getAt(index) {
|
|
193
107
|
if (index < 0 || index >= this.length)
|
|
194
108
|
return undefined;
|
|
195
|
-
|
|
196
|
-
for (
|
|
109
|
+
let current = this.head;
|
|
110
|
+
for (let i = 0; i < index; i++) {
|
|
197
111
|
current = current.next;
|
|
198
112
|
}
|
|
199
113
|
return current.val;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
for (
|
|
114
|
+
}
|
|
115
|
+
getNodeAt(index) {
|
|
116
|
+
let current = this.head;
|
|
117
|
+
for (let i = 0; i < index; i++) {
|
|
204
118
|
current = current.next;
|
|
205
119
|
}
|
|
206
120
|
return current;
|
|
207
|
-
}
|
|
208
|
-
|
|
121
|
+
}
|
|
122
|
+
deleteAt(index) {
|
|
209
123
|
if (index < 0 || index >= this.length)
|
|
210
124
|
return undefined;
|
|
211
125
|
if (index === 0)
|
|
212
126
|
return this.shift();
|
|
213
127
|
if (index === this.length - 1)
|
|
214
128
|
return this.pop();
|
|
215
|
-
|
|
216
|
-
|
|
129
|
+
const prevNode = this.getNodeAt(index - 1);
|
|
130
|
+
const removedNode = prevNode.next;
|
|
217
131
|
prevNode.next = removedNode.next;
|
|
218
132
|
this._length--;
|
|
219
133
|
return removedNode.val;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
|
|
134
|
+
}
|
|
135
|
+
delete(valueOrNode) {
|
|
136
|
+
let value;
|
|
223
137
|
if (valueOrNode instanceof SinglyLinkedListNode) {
|
|
224
138
|
value = valueOrNode.val;
|
|
225
139
|
}
|
|
226
140
|
else {
|
|
227
141
|
value = valueOrNode;
|
|
228
142
|
}
|
|
229
|
-
|
|
143
|
+
let current = this.head, prev = null;
|
|
230
144
|
while (current) {
|
|
231
145
|
if (current.val === value) {
|
|
232
146
|
if (prev === null) {
|
|
@@ -248,8 +162,8 @@ var SinglyLinkedList = (function () {
|
|
|
248
162
|
current = current.next;
|
|
249
163
|
}
|
|
250
164
|
return false;
|
|
251
|
-
}
|
|
252
|
-
|
|
165
|
+
}
|
|
166
|
+
insertAt(index, val) {
|
|
253
167
|
if (index < 0 || index > this.length)
|
|
254
168
|
return false;
|
|
255
169
|
if (index === 0) {
|
|
@@ -260,47 +174,46 @@ var SinglyLinkedList = (function () {
|
|
|
260
174
|
this.push(val);
|
|
261
175
|
return true;
|
|
262
176
|
}
|
|
263
|
-
|
|
264
|
-
|
|
177
|
+
const newNode = new SinglyLinkedListNode(val);
|
|
178
|
+
const prevNode = this.getNodeAt(index - 1);
|
|
265
179
|
newNode.next = prevNode.next;
|
|
266
180
|
prevNode.next = newNode;
|
|
267
181
|
this._length++;
|
|
268
182
|
return true;
|
|
269
|
-
}
|
|
270
|
-
|
|
183
|
+
}
|
|
184
|
+
isEmpty() {
|
|
271
185
|
return this.length === 0;
|
|
272
|
-
}
|
|
273
|
-
|
|
186
|
+
}
|
|
187
|
+
clear() {
|
|
274
188
|
this._head = null;
|
|
275
189
|
this._tail = null;
|
|
276
190
|
this._length = 0;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
191
|
+
}
|
|
192
|
+
toArray() {
|
|
193
|
+
const array = [];
|
|
194
|
+
let current = this.head;
|
|
281
195
|
while (current) {
|
|
282
196
|
array.push(current.val);
|
|
283
197
|
current = current.next;
|
|
284
198
|
}
|
|
285
199
|
return array;
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
var _a;
|
|
200
|
+
}
|
|
201
|
+
reverse() {
|
|
289
202
|
if (!this.head || this.head === this.tail)
|
|
290
203
|
return;
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
204
|
+
let prev = null;
|
|
205
|
+
let current = this.head;
|
|
206
|
+
let next = null;
|
|
294
207
|
while (current) {
|
|
295
208
|
next = current.next;
|
|
296
209
|
current.next = prev;
|
|
297
210
|
prev = current;
|
|
298
211
|
current = next;
|
|
299
212
|
}
|
|
300
|
-
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
|
|
213
|
+
[this.head, this.tail] = [this.tail, this.head];
|
|
214
|
+
}
|
|
215
|
+
find(callback) {
|
|
216
|
+
let current = this.head;
|
|
304
217
|
while (current) {
|
|
305
218
|
if (callback(current.val)) {
|
|
306
219
|
return current.val;
|
|
@@ -308,10 +221,10 @@ var SinglyLinkedList = (function () {
|
|
|
308
221
|
current = current.next;
|
|
309
222
|
}
|
|
310
223
|
return null;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
224
|
+
}
|
|
225
|
+
indexOf(value) {
|
|
226
|
+
let index = 0;
|
|
227
|
+
let current = this.head;
|
|
315
228
|
while (current) {
|
|
316
229
|
if (current.val === value) {
|
|
317
230
|
return index;
|
|
@@ -320,9 +233,9 @@ var SinglyLinkedList = (function () {
|
|
|
320
233
|
current = current.next;
|
|
321
234
|
}
|
|
322
235
|
return -1;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
|
|
236
|
+
}
|
|
237
|
+
findNode(value) {
|
|
238
|
+
let current = this.head;
|
|
326
239
|
while (current) {
|
|
327
240
|
if (current.val === value) {
|
|
328
241
|
return current;
|
|
@@ -330,11 +243,11 @@ var SinglyLinkedList = (function () {
|
|
|
330
243
|
current = current.next;
|
|
331
244
|
}
|
|
332
245
|
return null;
|
|
333
|
-
}
|
|
334
|
-
|
|
246
|
+
}
|
|
247
|
+
insertBefore(existingValueOrNode, newValue) {
|
|
335
248
|
if (!this.head)
|
|
336
249
|
return false;
|
|
337
|
-
|
|
250
|
+
let existingValue;
|
|
338
251
|
if (existingValueOrNode instanceof SinglyLinkedListNode) {
|
|
339
252
|
existingValue = existingValueOrNode.val;
|
|
340
253
|
}
|
|
@@ -345,10 +258,10 @@ var SinglyLinkedList = (function () {
|
|
|
345
258
|
this.unshift(newValue);
|
|
346
259
|
return true;
|
|
347
260
|
}
|
|
348
|
-
|
|
261
|
+
let current = this.head;
|
|
349
262
|
while (current.next) {
|
|
350
263
|
if (current.next.val === existingValue) {
|
|
351
|
-
|
|
264
|
+
const newNode = new SinglyLinkedListNode(newValue);
|
|
352
265
|
newNode.next = current.next;
|
|
353
266
|
current.next = newNode;
|
|
354
267
|
this._length++;
|
|
@@ -357,9 +270,9 @@ var SinglyLinkedList = (function () {
|
|
|
357
270
|
current = current.next;
|
|
358
271
|
}
|
|
359
272
|
return false;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
|
|
273
|
+
}
|
|
274
|
+
insertAfter(existingValueOrNode, newValue) {
|
|
275
|
+
let existingNode;
|
|
363
276
|
if (existingValueOrNode instanceof SinglyLinkedListNode) {
|
|
364
277
|
existingNode = existingValueOrNode;
|
|
365
278
|
}
|
|
@@ -367,7 +280,7 @@ var SinglyLinkedList = (function () {
|
|
|
367
280
|
existingNode = this.findNode(existingValueOrNode);
|
|
368
281
|
}
|
|
369
282
|
if (existingNode) {
|
|
370
|
-
|
|
283
|
+
const newNode = new SinglyLinkedListNode(newValue);
|
|
371
284
|
newNode.next = existingNode.next;
|
|
372
285
|
existingNode.next = newNode;
|
|
373
286
|
if (existingNode === this.tail) {
|
|
@@ -377,10 +290,10 @@ var SinglyLinkedList = (function () {
|
|
|
377
290
|
return true;
|
|
378
291
|
}
|
|
379
292
|
return false;
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
293
|
+
}
|
|
294
|
+
countOccurrences(value) {
|
|
295
|
+
let count = 0;
|
|
296
|
+
let current = this.head;
|
|
384
297
|
while (current) {
|
|
385
298
|
if (current.val === value) {
|
|
386
299
|
count++;
|
|
@@ -388,26 +301,14 @@ var SinglyLinkedList = (function () {
|
|
|
388
301
|
current = current.next;
|
|
389
302
|
}
|
|
390
303
|
return count;
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
if (!current) return [3, 3];
|
|
401
|
-
return [4, current.val];
|
|
402
|
-
case 2:
|
|
403
|
-
_a.sent();
|
|
404
|
-
current = current.next;
|
|
405
|
-
return [3, 1];
|
|
406
|
-
case 3: return [2];
|
|
407
|
-
}
|
|
408
|
-
});
|
|
409
|
-
};
|
|
410
|
-
return SinglyLinkedList;
|
|
411
|
-
}());
|
|
304
|
+
}
|
|
305
|
+
*[Symbol.iterator]() {
|
|
306
|
+
let current = this.head;
|
|
307
|
+
while (current) {
|
|
308
|
+
yield current.val;
|
|
309
|
+
current = current.next;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
412
313
|
exports.SinglyLinkedList = SinglyLinkedList;
|
|
413
314
|
//# sourceMappingURL=singly-linked-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singly-linked-list.js","sourceRoot":"","sources":["../../../src/data-structures/linked-list/singly-linked-list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"singly-linked-list.js","sourceRoot":"","sources":["../../../src/data-structures/linked-list/singly-linked-list.ts"],"names":[],"mappings":"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"}
|