# Delete all even elements from a stack

• Difficulty Level : Easy
• Last Updated : 18 Aug, 2021

Given a stack with n elements, the task is to remove all the elements of the stack without affecting the order of elements.
Examples:

Input : s = 16 <- 15 <- 29 <- 24 <- 19 (TOP)
Output: 19 29 15
19 29 15 is the order of odd elements in which
they will be popped from the given stack.
Input : s = 1 <- 2 <- 3 <- 4 <- 5 (TOP)
Output: 5 3 1

Approach:

1. Create a temporary stack temp and start popping the elements of the given stack s.
2. For every popped element say val, if val % 2 == 1 then push it to temp.
3. At the end of step 2, temp will contain all the odd elements from s but in reverse order.
4. Now, to get the original order, pop every element from temp and push it to s.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``#include ``#include ` `using` `namespace` `std;` `// Utility function to print``// the contents of a stack``static` `void` `printStack(stack<``int``> s)``{``    ``while` `(!s.empty())``    ``{``        ``cout << s.top() << ``" "``;``        ``s.pop();``    ``}``}` `// Function to delete all even``// elements from the stack``static` `void` `deleteEven(stack<``int``> s)``{``    ``stack<``int``> temp;``    ``// While stack is not empty``    ``while` `(!s.empty())``    ``{``        ``int` `val = s.top();``        ``s.pop();` `        ``// If value is odd then push``        ``// it to the temporary stack``        ``if` `(val % 2 == 1)``            ``temp.push(val);``    ``}` `    ``// Transfer the contents of the temporary stack``    ``// to the original stack in order to get``    ``// the original order of the elements``    ``while` `(!temp.empty())``    ``{``        ``s.push(temp.top());``        ``temp.pop();``    ``}` `    ``// Print the modified stack content``    ``printStack(s);``}` `// Driver Code``int` `main()``{``    ``stack<``int``> s;``    ``s.push(16);``    ``s.push(15);``    ``s.push(29);``    ``s.push(24);``    ``s.push(19);``    ``deleteEven(s);``    ``return` `0;``}`` ` `// This code is contributed by Vivekkumar Singh`

## Java

 `// Java implementation of the approach``import` `java.util.Stack;``class` `GFG {` `    ``// Utility function to print``    ``// the contents of a stack``    ``static` `void` `printStack(Stack stack)``    ``{``        ``while` `(!stack.isEmpty())``            ``System.out.print(stack.pop() + ``" "``);``    ``}` `    ``// Function to delete all even``    ``// elements from the stack``    ``static` `void` `deleteEven(Stack stack)``    ``{``        ``Stack temp = ``new` `Stack<>();` `        ``// While stack is not empty``        ``while` `(!stack.isEmpty()) {``            ``int` `val = stack.pop();` `            ``// If value is odd then push``            ``// it to the temporary stack``            ``if` `(val % ``2` `== ``1``)``                ``temp.push(val);``        ``}` `        ``// Transfer the contents of the temporary stack``        ``// to the original stack in order to get``        ``// the original order of the elements``        ``while` `(!temp.isEmpty())``            ``stack.push(temp.pop());` `        ``// Print the modified stack content``        ``printStack(stack);``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``Stack stack = ``new` `Stack<>();``        ``stack.push(``16``);``        ``stack.push(``15``);``        ``stack.push(``29``);``        ``stack.push(``24``);``        ``stack.push(``19``);` `        ``deleteEven(stack);``    ``}``}`

## Python3

 `# Python implementation of the approach`` ` `# Utility function to print``# the contents of a stack``def` `printStack(s):``    ``while` `(``len``(s)!``=``0``):``        ``print``(s.pop(),end``=``" "``)` `# Function to delete all even``# elements from the stack``def` `deleteEven(s):``    ``temp ``=` `[]``    ` `    ``# While stack is not empty``    ``while` `(``len``(s)!``=``0``):``        ``val``=``s.pop()``        ` `        ``# If value is odd then push``        ``# it to the temporary stack``        ``if` `(val ``%` `2` `=``=` `1``):``            ``temp.append(val)``    ` `    ``# Transfer the contents of the temporary stack``    ``# to the original stack in order to get``    ``# the original order of the elements``    ``while` `(``len``(temp)!``=``0``):``        ``s.append(temp.pop())``    ` `    ``# Print the modified stack content``    ``printStack(s);` `# Driver Code``s ``=` `[]``s.append(``16``)``s.append(``15``)``s.append(``29``)``s.append(``24``)``s.append(``19``)``deleteEven(s)` `# This code is contributed by rag2127.`

## C#

 `// C# implementation of the approach``using` `System;``using` `System.Collections.Generic;` `class` `GFG``{` `    ``// Utility function to print``    ``// the contents of a stack``    ``static` `void` `printStack(Stack<``int``> stack)``    ``{``        ``while` `(stack.Count != 0)``            ``Console.Write(stack.Pop() + ``" "``);``    ``}` `    ``// Function to delete all even``    ``// elements from the stack``    ``static` `void` `deleteEven(Stack<``int``> stack)``    ``{``        ``Stack<``int``> temp = ``new` `Stack<``int``>();` `        ``// While stack is not empty``        ``while` `(stack.Count != 0)``        ``{``            ``int` `val = stack.Pop();` `            ``// If value is odd then push``            ``// it to the temporary stack``            ``if` `(val % 2 == 1)``                ``temp.Push(val);``        ``}` `        ``// Transfer the contents of the temporary stack``        ``// to the original stack in order to get``        ``// the original order of the elements``        ``while` `(temp.Count != 0)``            ``stack.Push(temp.Pop());` `        ``// Print the modified stack content``        ``printStack(stack);``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main(String[] args)``    ``{``        ``Stack<``int``> stack = ``new` `Stack<``int``>();``        ``stack.Push(16);``        ``stack.Push(15);``        ``stack.Push(29);``        ``stack.Push(24);``        ``stack.Push(19);` `        ``deleteEven(stack);``    ``}``}` `// This code has been contributed by 29AjayKumar`

## Javascript

 ``

Output:

`19 29 15`

Time Complexity: O(N)
Auxiliary Space: O(N)

My Personal Notes arrow_drop_up