Javascript Program To Delete Middle Of Linked List
Last Updated :
23 Jul, 2025
Given a singly linked list, delete the middle of the linked list. For example, if the given linked list is 1->2->3->4->5 then the linked list should be modified to 1->2->4->5
If there are even nodes, then there would be two middle nodes, we need to delete the second middle element. For example, if given linked list is 1->2->3->4->5->6 then it should be modified to 1->2->3->5->6.
If the input linked list is NULL, then it should remain NULL.
If the input linked list has 1 node, then this node should be deleted and a new head should be returned.
Efficient solution:
Approach:
The above solution requires two traversals of the linked list. The middle node can be deleted using one traversal. The idea is to use two pointers, slow_ptr, and fast_ptr. Both pointers start from the head of list. When fast_ptr reaches the end, slow_ptr reaches middle. This idea is same as the one used in method 2 of this post. The additional thing in this post is to keep track of the previous middle so the middle node can be deleted.
Below is the implementation.
JavaScript
// Javascript program to delete the
// middle of a linked list
// Link list Node
class Node {
constructor() {
this.data = 0;
this.next = null;
}
}
// Deletes middle node and returns
// head of the modified list
function deleteMid(head) {
// Base cases
if (head == null)
return null;
if (head.next == null) {
return null;
}
// Initialize slow and fast pointers
// to reach middle of linked list
let slow_ptr = head;
let fast_ptr = head;
// Find the middle and previous of
// middle.
let prev = null;
// To store previous of slow_ptr
while (fast_ptr != null &&
fast_ptr.next != null) {
fast_ptr = fast_ptr.next.next;
prev = slow_ptr;
slow_ptr = slow_ptr.next;
}
// Delete the middle node
prev.next = slow_ptr.next;
return head;
}
// A utility function to print
// a given linked list
function printList(ptr) {
while (ptr != null) {
console.log(ptr.data);
ptr = ptr.next;
}
console.log("NULL");
}
// Utility function to create a
// new node.
function newNode(data) {
temp = new Node();
temp.data = data;
temp.next = null;
return temp;
}
// Driver code
// Start with the empty list
head = newNode(1);
head.next = newNode(2);
head.next.next = newNode(3);
head.next.next.next = newNode(4);
console.log("Given Linked List");
printList(head);
head = deleteMid(head);
console.log("Linked List after deletion of middle");
printList(head);
// This code is contributed by umadevi9616
OutputGiven Linked List
1
2
3
4
NULL
Linked List after deletion of middle
1
2
4
NULL
Complexity Analysis:
- Time Complexity: O(n).
Only one traversal of the linked list is needed - Auxiliary Space: O(1).
As no extra space is needed.
Please refer complete article on Delete middle of linked list for more details!
Explore
JavaScript Basics
Array & String
Function & Object
OOP
Asynchronous JavaScript
Exception Handling
DOM
Advanced Topics