From dad4c69c98629a4ceb2dc8e1515400a8851cdd84 Mon Sep 17 00:00:00 2001 From: Nimit Arora Date: Sun, 1 Oct 2017 12:39:38 +0530 Subject: [PATCH] Added algorithm to reverse a stack using recursion --- Misc/ReverseStackUsingRecursion.java | 74 ++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Misc/ReverseStackUsingRecursion.java diff --git a/Misc/ReverseStackUsingRecursion.java b/Misc/ReverseStackUsingRecursion.java new file mode 100644 index 000000000..4bcdeb25e --- /dev/null +++ b/Misc/ReverseStackUsingRecursion.java @@ -0,0 +1,74 @@ +package stacks_and_queues; + + +import java.util.Stack; + +public class ReverseStackUsingRecursion { + + //Stack + private static Stack stack=new Stack<>(); + + //Main function + public static void main(String[] args) { + //To Create a Dummy Stack containing integers from 0-9 + for(int i=0;i<10;i++) + { + stack.push(i); + } + System.out.println("STACK"); + + //To print that dummy Stack + for(int k=9;k>=0;k--) + { + System.out.println(k); + } + + //Reverse Function called + reverseUsingRecursion(stack); + + System.out.println("REVERSED STACK : "); + //To print reversed stack + while (!stack.isEmpty()) + { + System.out.println(stack.pop()); + } + + + } + + //Function Used to reverse Stack Using Recursion + private static void reverseUsingRecursion(Stack stack) { + if(stack.isEmpty()) + { + return; + } + /* All items are stored in call stack until we reach the end*/ + + int temptop=stack.peek(); + stack.pop(); + reverseUsingRecursion(stack); //Recursion call + insertAtEnd(temptop); // Insert items held in call stack one by one into stack + } + + //Function used to insert element at the end of stack + private static void insertAtEnd(int temptop) { + if(stack.isEmpty()) + { + stack.push(temptop); // If stack is empty push the element + } + else { + int temp = stack.peek(); /* All the items are stored in call stack until we reach end*/ + stack.pop(); + + insertAtEnd(temptop); + + stack.push(temp); + } + + } + + + + + +}