Finding and deleting the Middle Element of a List in C++

Nitish Singh
2 min readJun 20, 2023

--

Overview

Finding the middle element of a double-linked list can be a daunting task, especially when dealing with large amounts of data. Fortunately, there are various methods you can use to make this process easier. One approach is to use a two-pointer technique, where one pointer moves at a slower pace while the other moves twice as fast. Another method is to first find the length of the list and then divide it by two to find the middle element. Whichever approach you choose, having a clear understanding of double-linked lists and their properties is essential in finding the middle element efficiently.

To understand this article, you should have a basic understanding of C++ and familiarity with double-linked lists. It will also be helpful to have knowledge of iterating through containers and manipulating list elements in C++. Please follow this link to learn more about list in C++.

Let’s go through the code provided and understand how it finds and deletes the middle element from a double-linked list.

#include <iostream>
#include <list>
using namespace std;

void main() {

// Create a double-linked list
list<int> dblList = {1, 2, 3, 4, 5};

// Find the middle iterator
auto middleIterator = dblList.begin();
advance(middleIterator, dblList.size() / 2);

// Delete the middle element
dblList.erase(middleIterator);

// Print the updated list
for (const auto& element : dblList)
cout << element << " ";

cout << endl;
}

To gain further understanding of the algorithm for finding the middle element of a double linked list in C++, individuals are encouraged to explore the provided GitHub link.

Explanation

  1. We start by creating a double-linked list using the std::list container. In this example, the list contains elements {1, 2, 3, 4, 5}.
  2. To find the middle element, we use the std::advance function to move the iterator to the middle position. The std::advance function takes two arguments: the iterator to be moved and the number of steps to move. Here, we move the iterator middleIterator by doubleLinkedList.size() / 2 steps, which effectively places it at the middle element.
  3. Once the middle iterator is obtained, we use the erase function to delete the middle element from the double-linked list.
  4. Finally, we iterate through the updated list using a range-based for loop and print each element.

Conclusion

In this article, we discussed a simple approach to find the middle element of a double-linked list using C++. By utilizing the std::advance function and erasing the middle element, we were able to accomplish this task efficiently. Understanding how to find the middle element is beneficial when working with double-linked lists and can be applied in various algorithms and data structure implementations.

More Reads

To learn about implementing singly and double linked lists, please follow the provided links: Singly Linked List && Doubly Linked List

--

--

Nitish Singh
Nitish Singh

Written by Nitish Singh

Passionate about empowering devs with practical tips, using modern C++ as the tool, and up-to-date knowledge. Join me on Medium for engaging articles.