Find middle element in Linked List in Javascript
In this post we are going to find the middle of any Linked List . This is a very popular question ask by the interviewers .
Lets start by creating a Linked List in javascript. For that you can check my previous post
Create Linked List and Remove node in Javascript
So lets move ahead. To find a middle element please refer to the below program.
findMiddle() {
let pointer = this.head;
let fastPointer = this.head;
while (pointer.next != null && fastPointer.next && fastPointer.next.next != null) {
pointer = pointer.next;
fastPointer = fastPointer.next.next
}
return pointer.data;
}
If its hard for you to integrate the above method in Linked List program. Here is the whole program. Try to run it directly.
class Node {
constructor(data) {
this.data = data;
this.next = null;
}
}
class LinkedList {
constructor(head = null) {
this.head = head;
}
add(data) {
let node = new Node(data);
if (this.head == null)
this.head = node;
else {
let current = this.head;
while (current.next) {
current = current.next;
}
current.next = node;
}
}
findMiddle() {
let pointer = this.head;
let fastPointer = this.head;
while (pointer.next != null && fastPointer.next && fastPointer.next.next != null) {
pointer = pointer.next;
fastPointer = fastPointer.next.next
}
return pointer.data;
}
}
let ll = new LinkedList();
ll.add(10);
ll.add(20);
ll.add(30);
ll.add(40);
ll.add(50);
//console.log(JSON.stringify(ll))
let middle = ll.findMiddle();
console.log(middle);