12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- "use strict";
- 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--;
- }
-
- static createNode(data) {
- return {
- prev: null,
- next: null,
- data: data
- };
- }
- }
- module.exports = DoublyLinkedList;
|