# Reverse a number using stack

Given a number , write a program to reverse this number using stack.

Examples:

```Input : 365
Output : 563

Input : 6899
Output : 9986```

We have already discussed the simple method to reverse a number in this post. In this post we will discuss about how to reverse a number using stack.
The idea to do this is to extract digits of the number and push the digits on to a stack. Once all of the digits of the number are pushed to the stack, we will start popping the contents of stack one by one and form a number.
As stack is a LIFO data structure, digits of the newly formed number will be in reverse order.

Below is the implementation of above idea:

## C++

 `// CPP program to reverse the number ` `// using a stack`   `#include ` `using` `namespace` `std;`   `// Stack to maintain order of digits` `stack <``int``> st;`   `// Function to push digits into stack` `void` `push_digits(``int` `number)` `{` `    ``while` `(number != 0) ` `    ``{` `        ``st.push(number % 10);` `        ``number = number / 10;` `    ``}` `}`   `// Function to reverse the number` `int` `reverse_number(``int` `number)` `{` `    ``// Function call to push number's ` `    ``// digits to stack` `    ``push_digits(number);` `    `  `    ``int` `reverse = 0;` `    ``int` `i = 1;` `    `  `    ``// Popping the digits and forming ` `    ``// the reversed number` `    ``while` `(!st.empty()) ` `    ``{` `        ``reverse = reverse + (st.top() * i);` `        ``st.pop();` `        ``i = i * 10;` `    ``}` `    `  `    ``// Return the reversed number formed` `    ``return` `reverse;` `}`   `// Driver program to test above function` `int` `main()` `{` `    ``int` `number = 39997;` `    `  `    ``// Function call to reverse number` `    ``cout << reverse_number(number);` `    `  `    ``return` `0;` `}`

## Java

 `// Java program to reverse the number` `// using a stack` `import` `java.util.Stack;`   `public` `class` `GFG` `{` `    ``// Stack to maintain order of digits` `    ``static` `Stack st= ``new` `Stack<>();`   `    ``// Function to push digits into stack` `    ``static` `void` `push_digits(``int` `number)` `    ``{` `        ``while``(number != ``0``)` `        ``{` `            ``st.push(number % ``10``);` `            ``number = number / ``10``;` `        ``}` `    ``}`   `    ``// Function to reverse the number` `    ``static` `int` `reverse_number(``int` `number)` `    ``{` `        ``// Function call to push number's` `        ``// digits to stack` `        ``push_digits(number);` `        ``int` `reverse = ``0``;` `        ``int` `i = ``1``;`   `        ``// Popping the digits and forming` `        ``// the reversed number` `        ``while` `(!st.isEmpty())` `        ``{` `            ``reverse = reverse + (st.peek() * i);` `            ``st.pop();` `            ``i = i * ``10``;` `        ``}`   `        ``// Return the reversed number formed` `        ``return` `reverse;` `    ``}`   `    ``// Driver program to test above function` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int` `number = ``39997``;` `        ``System.out.println(reverse_number(number));` `    ``}` `}` `// This code is contributed by Sumit Ghosh`

## Python3

 `# Python3 program to reverse the ` `# number using a stack`   `# Stack to maintain order of digits` `st ``=` `[];`   `# Function to push digits into stack` `def` `push_digits(number):`   `    ``while` `(number !``=` `0``): ` `        ``st.append(number ``%` `10``);` `        ``number ``=` `int``(number ``/` `10``);`   `# Function to reverse the number` `def` `reverse_number(number):` `    `  `    ``# Function call to push number's ` `    ``# digits to stack` `    ``push_digits(number);` `    `  `    ``reverse ``=` `0``;` `    ``i ``=` `1``;` `    `  `    ``# Popping the digits and forming ` `    ``# the reversed number` `    ``while` `(``len``(st) > ``0``): ` `        ``reverse ``=` `reverse ``+` `(st[``len``(st) ``-` `1``] ``*` `i);` `        ``st.pop();` `        ``i ``=` `i ``*` `10``;` `    `  `    ``# Return the reversed number formed` `    ``return` `reverse;`   `# Driver Code` `number ``=` `39997``;`   `# Function call to reverse number` `print``(reverse_number(number));`   `# This code is contributed by mits`

## C#

 `// C# program to reverse the number ` `// using a stack ` `using` `System;` `using` `System.Collections.Generic;`   `class` `GFG` `{` `// Stack to maintain order of digits ` `public` `static` `Stack<``int``> st = ``new` `Stack<``int``>();`   `// Function to push digits into stack ` `public` `static` `void` `push_digits(``int` `number)` `{` `    ``while` `(number != 0)` `    ``{` `        ``st.Push(number % 10);` `        ``number = number / 10;` `    ``}` `}`   `// Function to reverse the number ` `public` `static` `int` `reverse_number(``int` `number)` `{` `    ``// Function call to push number's ` `    ``// digits to stack ` `    ``push_digits(number);` `    ``int` `reverse = 0;` `    ``int` `i = 1;`   `    ``// Popping the digits and forming ` `    ``// the reversed number ` `    ``while` `(st.Count > 0)` `    ``{` `        ``reverse = reverse + (st.Peek() * i);` `        ``st.Pop();` `        ``i = i * 10;` `    ``}`   `    ``// Return the reversed number formed ` `    ``return` `reverse;` `}`   `// Driver Code` `public` `static` `void` `Main(``string``[] args)` `{` `    ``int` `number = 39997;` `    ``Console.WriteLine(reverse_number(number));` `}` `}`   `// This code is contributed by Shrikant13`

## PHP

 ``

## Javascript

 ``

Output

`79993`

Time Complexity: O( logN )
Auxiliary Space: O( logN ), Where N is the input number.

If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Previous
Next