Для поиска третьего элемента из последнего требуется, чтобы вы сохранили переменную и присвоили ее корневому элементу и увеличили ее, когда длина связанного списка больше, чем равна 3.
class Node { constructor(value) { this.data = value; this.next = null; } } class LinkedList { add(value) { const node = new Node(value); let current = this.root; if (current == null) { this.root = node; } else { while (current.next != null) { current = current.next; } current.next = node; } } findThirdFromEnd() { let third; let current = this.root; let length = 0; while (current != null) { if (length >= 3) { third = third.next; } else { third = this.root; } current = current.next; ++length; } if (length >= 3) { return third.data; } } } const list = new LinkedList(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); console.log("third element from end", list.findThirdFromEnd())