Delete the middle element of a stack in C++
In this tutorial, we will learn how to delete the middle element of a stack in C++. We can use the STL (Standard template library) stack and have to delete the middle element. This can be done by using other data structures also. Below, given is a simple and interesting solution.
For example:
Input : Stack[] = [12, 24, 3, 48, 5] Output : Stack[] = [12, 24, 48, 5] Input : Stack[] = [10, 23, 33, 54, 5, 76] Output : Stack[] = [10, 23, 54, 5, 76]
How to Delete the middle element of a stack in C++
We first remove all the elements one by one and identify the middle element. Then, in our recursive calls, we push back all the elements except the middle one.
Here, is a dry run for the approach:
Here, is the code implementation:
#include<bits/stdc++.h> using namespace std; void deletemid(stack<int> &st, int n, int curr=0) { if (st.empty() || curr == n) return; int x = st.top(); st.pop(); deletemid(st, n, curr+1); // Put all items back except middle if (curr != n/2) st.push(x); } int main() { stack<int> st; st.push(10); st.push(23); st.push(33); st.push(54); st.push(5); st.push(76); deletemid(st, st.size()); while (!st.empty()) { int p=st.top(); st.pop(); cout << p << " "; } return 0; }
Output:
76 5 54 23 10
You may also interested in reading the below tutorials”
Count the number of occurrences of an element in a linked list in C++
Thank you! Please comment for suggestions.
Leave a Reply