Given a singly linked list, delete middle of the linked list. For example, if given linked list is 1->2->3->4->5 then 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 new head should be returned.
A Simple Solution is to first count number of nodes in linked list, then delete n/2’th node using the simple deletion process.
The above solution requires two traversals of linked list. We can delete middle node using one traversal. The idea is to use two pointers, slow_ptr and fast_ptr. Both pointers start from head of list. When fast_ptr reaches 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 previous of middle so that we can delete middle.
Below is the implementation.
Gven Linked List 1->2->3->4->NULL Linked List after deletion of middle 1->2->4->NULL
This article is contributed by Piyush Gupta. If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
- Insert node into the middle of the linked list
- Find the middle of a given linked list in C and Java
- Insert N elements in a Linked List one after other at middle position
- Find middle of singly linked list Recursively
- Make middle node head in a linked list
- Find kth node from Middle towards Head of a Linked List
- Given a linked list of line segments, remove middle points
- Python program to find middle of a linked list using one traversal
- Traverse Linked List from middle to left-right order using recursion
- Iterative approach for removing middle points in a linked list of line segements
- Delete Nth node from the end of the given linked list
- Delete a linked list using recursion
- Delete all occurrences of a given key in a linked list
- Delete every Kth node from circular linked list
- Delete alternate nodes of a Linked List