One Hat Cyber Team
Your IP :
216.73.216.135
Server IP :
194.44.31.54
Server :
Linux zen.imath.kiev.ua 4.18.0-553.77.1.el8_10.x86_64 #1 SMP Fri Oct 3 14:30:23 UTC 2025 x86_64
Server Software :
Apache/2.4.37 (Rocky Linux) OpenSSL/1.1.1k
PHP Version :
5.6.40
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
vo
/
bbbbot
/
node_modules
/
generic-pool
/
lib
/
View File Name :
DoublyLinkedList.js
"use strict"; /** * A Doubly Linked List, because there aren't enough in the world... * this is pretty much a direct JS port of the one wikipedia * https://en.wikipedia.org/wiki/Doubly_linked_list * * For most usage 'insertBeginning' and 'insertEnd' should be enough * * nodes are expected to something like a POJSO like * { * prev: null, * next: null, * something: 'whatever you like' * } */ class DoublyLinkedList { constructor() { this.head = null; this.tail = null; this.length = 0; } insertBeginning(node) { if (this.head === null) { this.head = node; this.tail = node; node.prev = null; node.next = null; this.length++; } else { this.insertBefore(this.head, node); } } insertEnd(node) { if (this.tail === null) { this.insertBeginning(node); } else { this.insertAfter(this.tail, node); } } insertAfter(node, newNode) { newNode.prev = node; newNode.next = node.next; if (node.next === null) { this.tail = newNode; } else { node.next.prev = newNode; } node.next = newNode; this.length++; } insertBefore(node, newNode) { newNode.prev = node.prev; newNode.next = node; if (node.prev === null) { this.head = newNode; } else { node.prev.next = newNode; } node.prev = newNode; this.length++; } remove(node) { if (node.prev === null) { this.head = node.next; } else { node.prev.next = node.next; } if (node.next === null) { this.tail = node.prev; } else { node.next.prev = node.prev; } node.prev = null; node.next = null; this.length--; } // FIXME: this should not live here and has become a dumping ground... static createNode(data) { return { prev: null, next: null, data: data }; } } module.exports = DoublyLinkedList;