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.
Files changed (167) hide show
  1. package/.eslintrc.js +1 -0
  2. package/CHANGELOG.md +1 -1
  3. package/CONTRIBUTING.md +0 -0
  4. package/README.md +8 -8
  5. package/dist/data-structures/binary-tree/aa-tree.js +2 -5
  6. package/dist/data-structures/binary-tree/aa-tree.js.map +1 -1
  7. package/dist/data-structures/binary-tree/abstract-binary-tree.js +314 -457
  8. package/dist/data-structures/binary-tree/abstract-binary-tree.js.map +1 -1
  9. package/dist/data-structures/binary-tree/avl-tree.js +64 -90
  10. package/dist/data-structures/binary-tree/avl-tree.js.map +1 -1
  11. package/dist/data-structures/binary-tree/b-tree.js +2 -5
  12. package/dist/data-structures/binary-tree/b-tree.js.map +1 -1
  13. package/dist/data-structures/binary-tree/binary-indexed-tree.js +17 -22
  14. package/dist/data-structures/binary-tree/binary-indexed-tree.js.map +1 -1
  15. package/dist/data-structures/binary-tree/binary-tree.js +12 -31
  16. package/dist/data-structures/binary-tree/binary-tree.js.map +1 -1
  17. package/dist/data-structures/binary-tree/bst.js +157 -244
  18. package/dist/data-structures/binary-tree/bst.js.map +1 -1
  19. package/dist/data-structures/binary-tree/rb-tree.js +20 -44
  20. package/dist/data-structures/binary-tree/rb-tree.js.map +1 -1
  21. package/dist/data-structures/binary-tree/segment-tree.js +80 -122
  22. package/dist/data-structures/binary-tree/segment-tree.js.map +1 -1
  23. package/dist/data-structures/binary-tree/splay-tree.js +2 -5
  24. package/dist/data-structures/binary-tree/splay-tree.js.map +1 -1
  25. package/dist/data-structures/binary-tree/tree-multiset.js +168 -239
  26. package/dist/data-structures/binary-tree/tree-multiset.js.map +1 -1
  27. package/dist/data-structures/binary-tree/two-three-tree.js +2 -5
  28. package/dist/data-structures/binary-tree/two-three-tree.js.map +1 -1
  29. package/dist/data-structures/graph/abstract-graph.js +351 -585
  30. package/dist/data-structures/graph/abstract-graph.js.map +1 -1
  31. package/dist/data-structures/graph/directed-graph.js +152 -282
  32. package/dist/data-structures/graph/directed-graph.js.map +1 -1
  33. package/dist/data-structures/graph/map-graph.js +47 -88
  34. package/dist/data-structures/graph/map-graph.js.map +1 -1
  35. package/dist/data-structures/graph/undirected-graph.js +91 -180
  36. package/dist/data-structures/graph/undirected-graph.js.map +1 -1
  37. package/dist/data-structures/hash/coordinate-map.js +23 -45
  38. package/dist/data-structures/hash/coordinate-map.js.map +1 -1
  39. package/dist/data-structures/hash/coordinate-set.js +20 -42
  40. package/dist/data-structures/hash/coordinate-set.js.map +1 -1
  41. package/dist/data-structures/hash/hash-map.js +85 -247
  42. package/dist/data-structures/hash/hash-map.js.map +1 -1
  43. package/dist/data-structures/hash/hash-table.js +87 -128
  44. package/dist/data-structures/hash/hash-table.js.map +1 -1
  45. package/dist/data-structures/hash/pair.js +2 -5
  46. package/dist/data-structures/hash/pair.js.map +1 -1
  47. package/dist/data-structures/hash/tree-map.js +2 -5
  48. package/dist/data-structures/hash/tree-map.js.map +1 -1
  49. package/dist/data-structures/hash/tree-set.js +2 -5
  50. package/dist/data-structures/hash/tree-set.js.map +1 -1
  51. package/dist/data-structures/heap/heap.js +56 -80
  52. package/dist/data-structures/heap/heap.js.map +1 -1
  53. package/dist/data-structures/heap/max-heap.js +8 -26
  54. package/dist/data-structures/heap/max-heap.js.map +1 -1
  55. package/dist/data-structures/heap/min-heap.js +8 -26
  56. package/dist/data-structures/heap/min-heap.js.map +1 -1
  57. package/dist/data-structures/linked-list/doubly-linked-list.js +149 -218
  58. package/dist/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  59. package/dist/data-structures/linked-list/singly-linked-list.js +119 -218
  60. package/dist/data-structures/linked-list/singly-linked-list.js.map +1 -1
  61. package/dist/data-structures/linked-list/skip-linked-list.js +50 -70
  62. package/dist/data-structures/linked-list/skip-linked-list.js.map +1 -1
  63. package/dist/data-structures/matrix/matrix.js +7 -8
  64. package/dist/data-structures/matrix/matrix.js.map +1 -1
  65. package/dist/data-structures/matrix/matrix2d.js +57 -70
  66. package/dist/data-structures/matrix/matrix2d.js.map +1 -1
  67. package/dist/data-structures/matrix/navigator.js +18 -37
  68. package/dist/data-structures/matrix/navigator.js.map +1 -1
  69. package/dist/data-structures/matrix/vector2d.js +63 -84
  70. package/dist/data-structures/matrix/vector2d.js.map +1 -1
  71. package/dist/data-structures/priority-queue/max-priority-queue.js +13 -41
  72. package/dist/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  73. package/dist/data-structures/priority-queue/min-priority-queue.js +13 -41
  74. package/dist/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  75. package/dist/data-structures/priority-queue/priority-queue.js +93 -139
  76. package/dist/data-structures/priority-queue/priority-queue.js.map +1 -1
  77. package/dist/data-structures/queue/deque.js +82 -128
  78. package/dist/data-structures/queue/deque.js.map +1 -1
  79. package/dist/data-structures/queue/queue.js +57 -157
  80. package/dist/data-structures/queue/queue.js.map +1 -1
  81. package/dist/data-structures/stack/stack.js +21 -22
  82. package/dist/data-structures/stack/stack.js.map +1 -1
  83. package/dist/data-structures/tree/tree.js +33 -46
  84. package/dist/data-structures/tree/tree.js.map +1 -1
  85. package/dist/data-structures/trie/trie.js +93 -200
  86. package/dist/data-structures/trie/trie.js.map +1 -1
  87. package/dist/types/data-structures/abstract-binary-tree.js.map +1 -1
  88. package/dist/utils/utils.js +22 -107
  89. package/dist/utils/utils.js.map +1 -1
  90. package/lib/data-structures/binary-tree/abstract-binary-tree.d.ts +124 -123
  91. package/lib/data-structures/binary-tree/abstract-binary-tree.js +136 -216
  92. package/lib/data-structures/binary-tree/avl-tree.d.ts +19 -10
  93. package/lib/data-structures/binary-tree/avl-tree.js +35 -13
  94. package/lib/data-structures/binary-tree/binary-tree.d.ts +6 -6
  95. package/lib/data-structures/binary-tree/binary-tree.js +7 -7
  96. package/lib/data-structures/binary-tree/bst.d.ts +34 -34
  97. package/lib/data-structures/binary-tree/bst.js +86 -89
  98. package/lib/data-structures/binary-tree/rb-tree.d.ts +3 -3
  99. package/lib/data-structures/binary-tree/rb-tree.js +4 -4
  100. package/lib/data-structures/binary-tree/tree-multiset.d.ts +40 -42
  101. package/lib/data-structures/binary-tree/tree-multiset.js +76 -86
  102. package/lib/data-structures/graph/abstract-graph.d.ts +62 -62
  103. package/lib/data-structures/graph/abstract-graph.js +86 -86
  104. package/lib/data-structures/graph/directed-graph.d.ts +51 -51
  105. package/lib/data-structures/graph/directed-graph.js +63 -63
  106. package/lib/data-structures/graph/map-graph.d.ts +13 -13
  107. package/lib/data-structures/graph/map-graph.js +12 -12
  108. package/lib/data-structures/graph/undirected-graph.d.ts +30 -30
  109. package/lib/data-structures/graph/undirected-graph.js +32 -32
  110. package/lib/data-structures/priority-queue/priority-queue.d.ts +3 -3
  111. package/lib/data-structures/priority-queue/priority-queue.js +3 -3
  112. package/lib/data-structures/tree/tree.d.ts +4 -4
  113. package/lib/data-structures/tree/tree.js +6 -6
  114. package/lib/interfaces/abstract-binary-tree.d.ts +37 -42
  115. package/lib/interfaces/abstract-graph.d.ts +13 -13
  116. package/lib/interfaces/avl-tree.d.ts +6 -4
  117. package/lib/interfaces/bst.d.ts +10 -9
  118. package/lib/interfaces/directed-graph.d.ts +5 -5
  119. package/lib/interfaces/rb-tree.d.ts +2 -2
  120. package/lib/interfaces/undirected-graph.d.ts +2 -2
  121. package/lib/types/data-structures/abstract-binary-tree.d.ts +3 -3
  122. package/lib/types/data-structures/abstract-binary-tree.js +0 -1
  123. package/lib/types/data-structures/abstract-graph.d.ts +2 -2
  124. package/lib/types/data-structures/bst.d.ts +2 -2
  125. package/lib/types/data-structures/tree-multiset.d.ts +1 -1
  126. package/lib/types/utils/validate-type.d.ts +8 -8
  127. package/package.json +6 -6
  128. package/scripts/rename_clear_files.sh +29 -0
  129. package/src/data-structures/binary-tree/abstract-binary-tree.ts +241 -293
  130. package/src/data-structures/binary-tree/avl-tree.ts +43 -14
  131. package/src/data-structures/binary-tree/binary-tree.ts +8 -8
  132. package/src/data-structures/binary-tree/bst.ts +101 -96
  133. package/src/data-structures/binary-tree/rb-tree.ts +9 -9
  134. package/src/data-structures/binary-tree/tree-multiset.ts +82 -94
  135. package/src/data-structures/graph/abstract-graph.ts +114 -109
  136. package/src/data-structures/graph/directed-graph.ts +77 -77
  137. package/src/data-structures/graph/map-graph.ts +20 -15
  138. package/src/data-structures/graph/undirected-graph.ts +39 -39
  139. package/src/data-structures/priority-queue/priority-queue.ts +3 -3
  140. package/src/data-structures/tree/tree.ts +7 -7
  141. package/src/interfaces/abstract-binary-tree.ts +37 -50
  142. package/src/interfaces/abstract-graph.ts +13 -13
  143. package/src/interfaces/avl-tree.ts +6 -4
  144. package/src/interfaces/bst.ts +9 -9
  145. package/src/interfaces/directed-graph.ts +5 -5
  146. package/src/interfaces/rb-tree.ts +2 -2
  147. package/src/interfaces/undirected-graph.ts +2 -2
  148. package/src/types/data-structures/abstract-binary-tree.ts +3 -4
  149. package/src/types/data-structures/abstract-graph.ts +2 -2
  150. package/src/types/data-structures/bst.ts +2 -2
  151. package/src/types/data-structures/tree-multiset.ts +1 -1
  152. package/src/types/utils/validate-type.ts +10 -10
  153. package/test/integration/avl-tree.test.ts +24 -24
  154. package/test/integration/bst.test.ts +71 -71
  155. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +28 -28
  156. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +4 -12
  157. package/test/unit/data-structures/binary-tree/bst.test.ts +79 -79
  158. package/test/unit/data-structures/binary-tree/overall.test.ts +20 -20
  159. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +80 -80
  160. package/test/unit/data-structures/graph/directed-graph.test.ts +8 -8
  161. package/test/unit/data-structures/graph/map-graph.test.ts +4 -4
  162. package/test/unit/data-structures/graph/overall.test.ts +2 -2
  163. package/test/unit/data-structures/graph/undirected-graph.test.ts +1 -1
  164. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +4 -5
  165. package/test/unit/data-structures/tree/tree.test.ts +2 -2
  166. package/umd/bundle.min.js +1 -1
  167. package/umd/bundle.min.js.map +1 -1
@@ -1,33 +1,15 @@
1
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
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
2
  Object.defineProperty(exports, "__esModule", { value: true });
18
3
  exports.MinHeap = void 0;
19
- var heap_1 = require("./heap");
20
- var priority_queue_1 = require("../priority-queue");
21
- var MinHeap = (function (_super) {
22
- __extends(MinHeap, _super);
23
- function MinHeap(options) {
24
- var _this = _super.call(this, options) || this;
25
- _this._pq = new priority_queue_1.PriorityQueue({
26
- comparator: function (a, b) { return a.priority - b.priority; }
4
+ const heap_1 = require("./heap");
5
+ const priority_queue_1 = require("../priority-queue");
6
+ class MinHeap extends heap_1.Heap {
7
+ constructor(options) {
8
+ super(options);
9
+ this._pq = new priority_queue_1.PriorityQueue({
10
+ comparator: (a, b) => a.priority - b.priority
27
11
  });
28
- return _this;
29
12
  }
30
- return MinHeap;
31
- }(heap_1.Heap));
13
+ }
32
14
  exports.MinHeap = MinHeap;
33
15
  //# sourceMappingURL=min-heap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"min-heap.js","sourceRoot":"","sources":["../../../src/data-structures/heap/min-heap.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAQA,+BAAsC;AACtC,oDAAgD;AAOhD;IAAsC,2BAAO;IAS3C,iBAAY,OAAwB;QAApC,YACE,kBAAM,OAAO,CAAC,SAIf;QAHC,KAAI,CAAC,GAAG,GAAG,IAAI,8BAAa,CAAc;YACxC,UAAU,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAvB,CAAuB;SAC9C,CAAC,CAAC;;IACL,CAAC;IACH,cAAC;AAAD,CAAC,AAfD,CAAsC,WAAI,GAezC;AAfY,0BAAO"}
1
+ {"version":3,"file":"min-heap.js","sourceRoot":"","sources":["../../../src/data-structures/heap/min-heap.ts"],"names":[],"mappings":";;;AAQA,iCAAsC;AACtC,sDAAgD;AAOhD,MAAa,OAAiB,SAAQ,WAAO;IAS3C,YAAY,OAAwB;QAClC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,IAAI,8BAAa,CAAc;YACxC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ;SAC9C,CAAC,CAAC;IACL,CAAC;CACF;AAfD,0BAeC"}
@@ -1,125 +1,62 @@
1
1
  "use strict";
2
- var __values = (this && this.__values) || function(o) {
3
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
4
- if (m) return m.call(o);
5
- if (o && typeof o.length === "number") return {
6
- next: function () {
7
- if (o && i >= o.length) o = void 0;
8
- return { value: o && o[i++], done: !o };
9
- }
10
- };
11
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
- };
13
- var __read = (this && this.__read) || function (o, n) {
14
- var m = typeof Symbol === "function" && o[Symbol.iterator];
15
- if (!m) return o;
16
- var i = m.call(o), r, ar = [], e;
17
- try {
18
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
- }
20
- catch (error) { e = { error: error }; }
21
- finally {
22
- try {
23
- if (r && !r.done && (m = i["return"])) m.call(i);
24
- }
25
- finally { if (e) throw e.error; }
26
- }
27
- return ar;
28
- };
29
2
  Object.defineProperty(exports, "__esModule", { value: true });
30
3
  exports.DoublyLinkedList = exports.DoublyLinkedListNode = void 0;
31
- var DoublyLinkedListNode = (function () {
32
- function DoublyLinkedListNode(val) {
4
+ class DoublyLinkedListNode {
5
+ constructor(val) {
33
6
  this._val = val;
34
7
  this._next = null;
35
8
  this._prev = null;
36
9
  }
37
- Object.defineProperty(DoublyLinkedListNode.prototype, "val", {
38
- get: function () {
39
- return this._val;
40
- },
41
- set: function (value) {
42
- this._val = value;
43
- },
44
- enumerable: false,
45
- configurable: true
46
- });
47
- Object.defineProperty(DoublyLinkedListNode.prototype, "next", {
48
- get: function () {
49
- return this._next;
50
- },
51
- set: function (value) {
52
- this._next = value;
53
- },
54
- enumerable: false,
55
- configurable: true
56
- });
57
- Object.defineProperty(DoublyLinkedListNode.prototype, "prev", {
58
- get: function () {
59
- return this._prev;
60
- },
61
- set: function (value) {
62
- this._prev = value;
63
- },
64
- enumerable: false,
65
- configurable: true
66
- });
67
- return DoublyLinkedListNode;
68
- }());
10
+ get val() {
11
+ return this._val;
12
+ }
13
+ set val(value) {
14
+ this._val = value;
15
+ }
16
+ get next() {
17
+ return this._next;
18
+ }
19
+ set next(value) {
20
+ this._next = value;
21
+ }
22
+ get prev() {
23
+ return this._prev;
24
+ }
25
+ set prev(value) {
26
+ this._prev = value;
27
+ }
28
+ }
69
29
  exports.DoublyLinkedListNode = DoublyLinkedListNode;
70
- var DoublyLinkedList = (function () {
71
- function DoublyLinkedList() {
30
+ class DoublyLinkedList {
31
+ constructor() {
72
32
  this._head = null;
73
33
  this._tail = null;
74
34
  this._length = 0;
75
35
  }
76
- Object.defineProperty(DoublyLinkedList.prototype, "head", {
77
- get: function () {
78
- return this._head;
79
- },
80
- set: function (value) {
81
- this._head = value;
82
- },
83
- enumerable: false,
84
- configurable: true
85
- });
86
- Object.defineProperty(DoublyLinkedList.prototype, "tail", {
87
- get: function () {
88
- return this._tail;
89
- },
90
- set: function (value) {
91
- this._tail = value;
92
- },
93
- enumerable: false,
94
- configurable: true
95
- });
96
- Object.defineProperty(DoublyLinkedList.prototype, "length", {
97
- get: function () {
98
- return this._length;
99
- },
100
- enumerable: false,
101
- configurable: true
102
- });
103
- DoublyLinkedList.fromArray = function (data) {
104
- var e_1, _a;
105
- var doublyLinkedList = new DoublyLinkedList();
106
- try {
107
- for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {
108
- var item = data_1_1.value;
109
- doublyLinkedList.push(item);
110
- }
111
- }
112
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
113
- finally {
114
- try {
115
- if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);
116
- }
117
- finally { if (e_1) throw e_1.error; }
36
+ get head() {
37
+ return this._head;
38
+ }
39
+ set head(value) {
40
+ this._head = value;
41
+ }
42
+ get tail() {
43
+ return this._tail;
44
+ }
45
+ set tail(value) {
46
+ this._tail = value;
47
+ }
48
+ get length() {
49
+ return this._length;
50
+ }
51
+ static fromArray(data) {
52
+ const doublyLinkedList = new DoublyLinkedList();
53
+ for (const item of data) {
54
+ doublyLinkedList.push(item);
118
55
  }
119
56
  return doublyLinkedList;
120
- };
121
- DoublyLinkedList.prototype.push = function (val) {
122
- var newNode = new DoublyLinkedListNode(val);
57
+ }
58
+ push(val) {
59
+ const newNode = new DoublyLinkedListNode(val);
123
60
  if (!this.head) {
124
61
  this.head = newNode;
125
62
  this.tail = newNode;
@@ -130,14 +67,14 @@ var DoublyLinkedList = (function () {
130
67
  this.tail = newNode;
131
68
  }
132
69
  this._length++;
133
- };
134
- DoublyLinkedList.prototype.addLast = function (val) {
70
+ }
71
+ addLast(val) {
135
72
  this.push(val);
136
- };
137
- DoublyLinkedList.prototype.pop = function () {
73
+ }
74
+ pop() {
138
75
  if (!this.tail)
139
76
  return undefined;
140
- var removedNode = this.tail;
77
+ const removedNode = this.tail;
141
78
  if (this.head === this.tail) {
142
79
  this.head = null;
143
80
  this.tail = null;
@@ -148,14 +85,14 @@ var DoublyLinkedList = (function () {
148
85
  }
149
86
  this._length--;
150
87
  return removedNode.val;
151
- };
152
- DoublyLinkedList.prototype.pollLast = function () {
88
+ }
89
+ pollLast() {
153
90
  return this.pop();
154
- };
155
- DoublyLinkedList.prototype.shift = function () {
91
+ }
92
+ shift() {
156
93
  if (!this.head)
157
94
  return undefined;
158
- var removedNode = this.head;
95
+ const removedNode = this.head;
159
96
  if (this.head === this.tail) {
160
97
  this.head = null;
161
98
  this.tail = null;
@@ -166,12 +103,12 @@ var DoublyLinkedList = (function () {
166
103
  }
167
104
  this._length--;
168
105
  return removedNode.val;
169
- };
170
- DoublyLinkedList.prototype.pollFirst = function () {
106
+ }
107
+ pollFirst() {
171
108
  return this.shift();
172
- };
173
- DoublyLinkedList.prototype.unshift = function (val) {
174
- var newNode = new DoublyLinkedListNode(val);
109
+ }
110
+ unshift(val) {
111
+ const newNode = new DoublyLinkedListNode(val);
175
112
  if (!this.head) {
176
113
  this.head = newNode;
177
114
  this.tail = newNode;
@@ -182,45 +119,41 @@ var DoublyLinkedList = (function () {
182
119
  this.head = newNode;
183
120
  }
184
121
  this._length++;
185
- };
186
- DoublyLinkedList.prototype.addFirst = function (val) {
122
+ }
123
+ addFirst(val) {
187
124
  this.unshift(val);
188
- };
189
- DoublyLinkedList.prototype.peekFirst = function () {
125
+ }
126
+ peekFirst() {
190
127
  var _a;
191
128
  return (_a = this.head) === null || _a === void 0 ? void 0 : _a.val;
192
- };
193
- DoublyLinkedList.prototype.peekLast = function () {
129
+ }
130
+ peekLast() {
194
131
  var _a;
195
132
  return (_a = this.tail) === null || _a === void 0 ? void 0 : _a.val;
196
- };
197
- Object.defineProperty(DoublyLinkedList.prototype, "size", {
198
- get: function () {
199
- return this.length;
200
- },
201
- enumerable: false,
202
- configurable: true
203
- });
204
- DoublyLinkedList.prototype.getAt = function (index) {
133
+ }
134
+ get size() {
135
+ return this.length;
136
+ }
137
+ getAt(index) {
205
138
  if (index < 0 || index >= this.length)
206
139
  return undefined;
207
- var current = this.head;
208
- for (var i = 0; i < index; i++) {
140
+ let current = this.head;
141
+ for (let i = 0; i < index; i++) {
209
142
  current = current.next;
210
143
  }
211
144
  return current.val;
212
- };
213
- DoublyLinkedList.prototype.getNodeAt = function (index) {
145
+ }
146
+ getNodeAt(index) {
214
147
  if (index < 0 || index >= this.length)
215
148
  return null;
216
- var current = this.head;
217
- for (var i = 0; i < index; i++) {
149
+ let current = this.head;
150
+ for (let i = 0; i < index; i++) {
218
151
  current = current.next;
219
152
  }
220
153
  return current;
221
- };
222
- DoublyLinkedList.prototype.findNode = function (val) {
223
- var current = this.head;
154
+ }
155
+ findNode(val) {
156
+ let current = this.head;
224
157
  while (current) {
225
158
  if (current.val === val) {
226
159
  return current;
@@ -228,8 +161,8 @@ var DoublyLinkedList = (function () {
228
161
  current = current.next;
229
162
  }
230
163
  return null;
231
- };
232
- DoublyLinkedList.prototype.insertAt = function (index, val) {
164
+ }
165
+ insertAt(index, val) {
233
166
  if (index < 0 || index > this.length)
234
167
  return false;
235
168
  if (index === 0) {
@@ -240,33 +173,33 @@ var DoublyLinkedList = (function () {
240
173
  this.push(val);
241
174
  return true;
242
175
  }
243
- var newNode = new DoublyLinkedListNode(val);
244
- var prevNode = this.getNodeAt(index - 1);
245
- var nextNode = prevNode.next;
176
+ const newNode = new DoublyLinkedListNode(val);
177
+ const prevNode = this.getNodeAt(index - 1);
178
+ const nextNode = prevNode.next;
246
179
  newNode.prev = prevNode;
247
180
  newNode.next = nextNode;
248
181
  prevNode.next = newNode;
249
182
  nextNode.prev = newNode;
250
183
  this._length++;
251
184
  return true;
252
- };
253
- DoublyLinkedList.prototype.deleteAt = function (index) {
185
+ }
186
+ deleteAt(index) {
254
187
  if (index < 0 || index >= this.length)
255
188
  return undefined;
256
189
  if (index === 0)
257
190
  return this.shift();
258
191
  if (index === this.length - 1)
259
192
  return this.pop();
260
- var removedNode = this.getNodeAt(index);
261
- var prevNode = removedNode.prev;
262
- var nextNode = removedNode.next;
193
+ const removedNode = this.getNodeAt(index);
194
+ const prevNode = removedNode.prev;
195
+ const nextNode = removedNode.next;
263
196
  prevNode.next = nextNode;
264
197
  nextNode.prev = prevNode;
265
198
  this._length--;
266
199
  return removedNode.val;
267
- };
268
- DoublyLinkedList.prototype.delete = function (valOrNode) {
269
- var node;
200
+ }
201
+ delete(valOrNode) {
202
+ let node;
270
203
  if (valOrNode instanceof DoublyLinkedListNode) {
271
204
  node = valOrNode;
272
205
  }
@@ -281,8 +214,8 @@ var DoublyLinkedList = (function () {
281
214
  this.pop();
282
215
  }
283
216
  else {
284
- var prevNode = node.prev;
285
- var nextNode = node.next;
217
+ const prevNode = node.prev;
218
+ const nextNode = node.next;
286
219
  prevNode.next = nextNode;
287
220
  nextNode.prev = prevNode;
288
221
  this._length--;
@@ -290,26 +223,26 @@ var DoublyLinkedList = (function () {
290
223
  return true;
291
224
  }
292
225
  return false;
293
- };
294
- DoublyLinkedList.prototype.toArray = function () {
295
- var array = [];
296
- var current = this.head;
226
+ }
227
+ toArray() {
228
+ const array = [];
229
+ let current = this.head;
297
230
  while (current) {
298
231
  array.push(current.val);
299
232
  current = current.next;
300
233
  }
301
234
  return array;
302
- };
303
- DoublyLinkedList.prototype.isEmpty = function () {
235
+ }
236
+ isEmpty() {
304
237
  return this.length === 0;
305
- };
306
- DoublyLinkedList.prototype.clear = function () {
238
+ }
239
+ clear() {
307
240
  this._head = null;
308
241
  this._tail = null;
309
242
  this._length = 0;
310
- };
311
- DoublyLinkedList.prototype.find = function (callback) {
312
- var current = this.head;
243
+ }
244
+ find(callback) {
245
+ let current = this.head;
313
246
  while (current) {
314
247
  if (callback(current.val)) {
315
248
  return current.val;
@@ -317,10 +250,10 @@ var DoublyLinkedList = (function () {
317
250
  current = current.next;
318
251
  }
319
252
  return null;
320
- };
321
- DoublyLinkedList.prototype.indexOf = function (val) {
322
- var index = 0;
323
- var current = this.head;
253
+ }
254
+ indexOf(val) {
255
+ let index = 0;
256
+ let current = this.head;
324
257
  while (current) {
325
258
  if (current.val === val) {
326
259
  return index;
@@ -329,9 +262,9 @@ var DoublyLinkedList = (function () {
329
262
  current = current.next;
330
263
  }
331
264
  return -1;
332
- };
333
- DoublyLinkedList.prototype.findLast = function (callback) {
334
- var current = this.tail;
265
+ }
266
+ findLast(callback) {
267
+ let current = this.tail;
335
268
  while (current) {
336
269
  if (callback(current.val)) {
337
270
  return current.val;
@@ -339,47 +272,46 @@ var DoublyLinkedList = (function () {
339
272
  current = current.prev;
340
273
  }
341
274
  return null;
342
- };
343
- DoublyLinkedList.prototype.toArrayReverse = function () {
344
- var array = [];
345
- var current = this.tail;
275
+ }
276
+ toArrayReverse() {
277
+ const array = [];
278
+ let current = this.tail;
346
279
  while (current) {
347
280
  array.push(current.val);
348
281
  current = current.prev;
349
282
  }
350
283
  return array;
351
- };
352
- DoublyLinkedList.prototype.reverse = function () {
353
- var _a, _b;
354
- var current = this.head;
355
- _a = __read([this.tail, this.head], 2), this.head = _a[0], this.tail = _a[1];
284
+ }
285
+ reverse() {
286
+ let current = this.head;
287
+ [this.head, this.tail] = [this.tail, this.head];
356
288
  while (current) {
357
- var next = current.next;
358
- _b = __read([current.next, current.prev], 2), current.prev = _b[0], current.next = _b[1];
289
+ const next = current.next;
290
+ [current.prev, current.next] = [current.next, current.prev];
359
291
  current = next;
360
292
  }
361
- };
362
- DoublyLinkedList.prototype.forEach = function (callback) {
363
- var current = this.head;
364
- var index = 0;
293
+ }
294
+ forEach(callback) {
295
+ let current = this.head;
296
+ let index = 0;
365
297
  while (current) {
366
298
  callback(current.val, index);
367
299
  current = current.next;
368
300
  index++;
369
301
  }
370
- };
371
- DoublyLinkedList.prototype.map = function (callback) {
372
- var mappedList = new DoublyLinkedList();
373
- var current = this.head;
302
+ }
303
+ map(callback) {
304
+ const mappedList = new DoublyLinkedList();
305
+ let current = this.head;
374
306
  while (current) {
375
307
  mappedList.push(callback(current.val));
376
308
  current = current.next;
377
309
  }
378
310
  return mappedList;
379
- };
380
- DoublyLinkedList.prototype.filter = function (callback) {
381
- var filteredList = new DoublyLinkedList();
382
- var current = this.head;
311
+ }
312
+ filter(callback) {
313
+ const filteredList = new DoublyLinkedList();
314
+ let current = this.head;
383
315
  while (current) {
384
316
  if (callback(current.val)) {
385
317
  filteredList.push(current.val);
@@ -387,18 +319,18 @@ var DoublyLinkedList = (function () {
387
319
  current = current.next;
388
320
  }
389
321
  return filteredList;
390
- };
391
- DoublyLinkedList.prototype.reduce = function (callback, initialValue) {
392
- var accumulator = initialValue;
393
- var current = this.head;
322
+ }
323
+ reduce(callback, initialValue) {
324
+ let accumulator = initialValue;
325
+ let current = this.head;
394
326
  while (current) {
395
327
  accumulator = callback(accumulator, current.val);
396
328
  current = current.next;
397
329
  }
398
330
  return accumulator;
399
- };
400
- DoublyLinkedList.prototype.insertAfter = function (existingValueOrNode, newValue) {
401
- var existingNode;
331
+ }
332
+ insertAfter(existingValueOrNode, newValue) {
333
+ let existingNode;
402
334
  if (existingValueOrNode instanceof DoublyLinkedListNode) {
403
335
  existingNode = existingValueOrNode;
404
336
  }
@@ -406,7 +338,7 @@ var DoublyLinkedList = (function () {
406
338
  existingNode = this.findNode(existingValueOrNode);
407
339
  }
408
340
  if (existingNode) {
409
- var newNode = new DoublyLinkedListNode(newValue);
341
+ const newNode = new DoublyLinkedListNode(newValue);
410
342
  newNode.next = existingNode.next;
411
343
  if (existingNode.next) {
412
344
  existingNode.next.prev = newNode;
@@ -420,9 +352,9 @@ var DoublyLinkedList = (function () {
420
352
  return true;
421
353
  }
422
354
  return false;
423
- };
424
- DoublyLinkedList.prototype.insertBefore = function (existingValueOrNode, newValue) {
425
- var existingNode;
355
+ }
356
+ insertBefore(existingValueOrNode, newValue) {
357
+ let existingNode;
426
358
  if (existingValueOrNode instanceof DoublyLinkedListNode) {
427
359
  existingNode = existingValueOrNode;
428
360
  }
@@ -430,7 +362,7 @@ var DoublyLinkedList = (function () {
430
362
  existingNode = this.findNode(existingValueOrNode);
431
363
  }
432
364
  if (existingNode) {
433
- var newNode = new DoublyLinkedListNode(newValue);
365
+ const newNode = new DoublyLinkedListNode(newValue);
434
366
  newNode.prev = existingNode.prev;
435
367
  if (existingNode.prev) {
436
368
  existingNode.prev.next = newNode;
@@ -444,8 +376,7 @@ var DoublyLinkedList = (function () {
444
376
  return true;
445
377
  }
446
378
  return false;
447
- };
448
- return DoublyLinkedList;
449
- }());
379
+ }
380
+ }
450
381
  exports.DoublyLinkedList = DoublyLinkedList;
451
382
  //# sourceMappingURL=doubly-linked-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doubly-linked-list.js","sourceRoot":"","sources":["../../../src/data-structures/linked-list/doubly-linked-list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doubly-linked-list.js","sourceRoot":"","sources":["../../../src/data-structures/linked-list/doubly-linked-list.ts"],"names":[],"mappings":"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"}