Средний элемент можно найти, перебирая связанный список, сохраняя средний счетчик и обновляя его только тогда, когда длина равна произведению 2.
class Node { constructor(value) { this.data = value; this.next = null; } } class LinkedList { add(value) { let root = this.root; let node = new Node(value); if (root == null) { this.root = node; } else { while (root.next != null) { root = root.next; } root.next = node; } } findMiddle() { let middle; let length = 0; let root = this.root; while (root.next != null) { ++length; if (length % 2 == 0) { middle = root.next; } root = root.next; } return middle; } } const list = new LinkedList(); list.add(1); list.add(2); list.add(3); list.add(4); console.log("middle", list.findMiddle());