Средний элемент можно найти, перебирая связанный список, сохраняя средний счетчик и обновляя его только тогда, когда длина равна произведению 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());