repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge dependabot/npm_and_yarn/examples/typescript/http-server-pool/fastify-hybrid...
[poolifier.git]
/
src
/
deque.ts
diff --git
a/src/deque.ts
b/src/deque.ts
index 2eae8034845789b4991c3d1435c24f7050726c42..52441a3ec25f4f7251575104a0884f9ffeb22d00 100644
(file)
--- a/
src/deque.ts
+++ b/
src/deque.ts
@@
-1,19
+1,15
@@
-// Copyright Jerome Benoit. 2023. All Rights Reserved.
+// Copyright Jerome Benoit. 2023
-2024
. All Rights Reserved.
/**
/**
- *
Nod
e.
+ *
Linked list node interfac
e.
*
*
- * @typeParam T - Type of node data.
+ * @typeParam T - Type of
linked list
node data.
* @internal
*/
* @internal
*/
-export class Node<T> {
- public data: T
- public next?: Node<T>
- public prev?: Node<T>
-
- public constructor (data: T) {
- this.data = data
- }
+export interface ILinkedListNode<T> {
+ data: T
+ next?: ILinkedListNode<T>
+ prev?: ILinkedListNode<T>
}
/**
}
/**
@@
-24,8
+20,8
@@
export class Node<T> {
* @internal
*/
export class Deque<T> {
* @internal
*/
export class Deque<T> {
- private head?: Node<T>
- private tail?: Node<T>
+ private head?:
ILinkedList
Node<T>
+ private tail?:
ILinkedList
Node<T>
/** The size of the deque. */
public size!: number
/** The maximum size of the deque. */
/** The size of the deque. */
public size!: number
/** The maximum size of the deque. */
@@
-39,10
+35,10
@@
export class Deque<T> {
* Appends data to the deque.
*
* @param data - Data to append.
* Appends data to the deque.
*
* @param data - Data to append.
- * @returns The new size of the
que
ue.
+ * @returns The new size of the
deq
ue.
*/
public push (data: T): number {
*/
public push (data: T): number {
- const node
= new Node(data)
+ const node
: ILinkedListNode<T> = { data }
if (this.tail == null) {
this.head = this.tail = node
} else {
if (this.tail == null) {
this.head = this.tail = node
} else {
@@
-56,10
+52,10
@@
export class Deque<T> {
* Prepends data to the deque.
*
* @param data - Data to prepend.
* Prepends data to the deque.
*
* @param data - Data to prepend.
- * @returns The new size of the
que
ue.
+ * @returns The new size of the
deq
ue.
*/
public unshift (data: T): number {
*/
public unshift (data: T): number {
- const node
= new Node(data)
+ const node
: ILinkedListNode<T> = { data }
if (this.head == null) {
this.head = this.tail = node
} else {
if (this.head == null) {
this.head = this.tail = node
} else {
@@
-76,14
+72,14
@@
export class Deque<T> {
*/
public pop (): T | undefined {
if (this.head == null) {
*/
public pop (): T | undefined {
if (this.head == null) {
- return
undefined
+ return
}
const tail = this.tail
}
const tail = this.tail
- this.tail =
(this.tail as Node<T>)
.prev
+ this.tail =
this.tail?
.prev
if (this.tail == null) {
if (this.tail == null) {
-
this.head = undefine
d
+
delete this.hea
d
} else {
} else {
- this.tail.next = undefined
+ delete this.tail.next
}
--this.size
return tail?.data
}
--this.size
return tail?.data
@@
-96,17
+92,17
@@
export class Deque<T> {
*/
public shift (): T | undefined {
if (this.head == null) {
*/
public shift (): T | undefined {
if (this.head == null) {
- return
undefined
+ return
}
const head = this.head
this.head = this.head.next
if (this.head == null) {
}
const head = this.head
this.head = this.head.next
if (this.head == null) {
- this.tail = undefined
+ delete this.tail
} else {
} else {
- this.head.prev = undefined
+ delete this.head.prev
}
--this.size
}
--this.size
- return head
?
.data
+ return head.data
}
/**
}
/**
@@
-129,8
+125,8
@@
export class Deque<T> {
* Clears the deque.
*/
public clear (): void {
* Clears the deque.
*/
public clear (): void {
-
this.head = undefine
d
- this.tail = undefined
+
delete this.hea
d
+ delete this.tail
this.size = 0
this.maxSize = 0
}
this.size = 0
this.maxSize = 0
}
@@
-155,7
+151,7
@@
export class Deque<T> {
value: node.data,
done: false
}
value: node.data,
done: false
}
- node = node.next
as Node<T>
+ node = node.next
return ret
}
}
return ret
}
}
@@
-183,7
+179,7
@@
export class Deque<T> {
value: node.data,
done: false
}
value: node.data,
done: false
}
- node = node.prev
as Node<T>
+ node = node.prev
return ret
}
}
return ret
}
}