Open In App

Javascript Program To Delete Middle Of Linked List

Last Updated : 30 Dec, 2021
Like Article

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 program to delete the 
// middle of a linked list
// Link list Node 
class Node 
    { = 0; = null;
// Deletes middle node and returns
// head of the modified list
function deleteMid( head) 
    // Base cases
    if (head == null)
        return null;
    if ( == null
        return null;
    // Initialize slow and fast pointers
    // to reach middle of linked list
    var slow_ptr = head;
    var fast_ptr = head;
    // Find the middle and previous of 
    // middle.
    var prev = null;
    // To store previous of slow_ptr
    while (fast_ptr != null && 
  != null
        fast_ptr =;
        prev = slow_ptr;
        slow_ptr =;
    // Delete the middle node =;
    return head;
// A utility function to print
// a given linked list
function printList(ptr) 
    while (ptr != null
        document.write( + "->");
        ptr =;
// Utility function to create a 
// new node.
function newNode(data) 
    temp = new Node(); = data; = null;
    return temp;
// Driver code 
// Start with the empty list 
head = newNode(1); = newNode(2); = newNode(3); = newNode(4);
document.write("Given Linked List<br/>");
head = deleteMid(head);
         "Linked List after deletion of middle<br/>");
// This code is contributed by umadevi9616 


Given Linked List
Linked List after deletion of middle

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!

Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads