export class Node{ data: T; prev: Node = null; next: Node = null; constructor(data: T) { this.data = data; } } // create a node and optionally link it with previous one (in a circular doubly linked list) export function insertNode(data: T, last: Node | null) { const p = new Node(data); if (last === null) { p.prev = p; p.next = p; } else { p.next = last.next; p.prev = last; last.next.prev = p; last.next = p; } return p; } export function removeNode(p: Node) { p.next.prev = p.prev; p.prev.next = p.next; }