From dad4c69c98629a4ceb2dc8e1515400a8851cdd84 Mon Sep 17 00:00:00 2001 From: Nimit Arora Date: Sun, 1 Oct 2017 12:39:38 +0530 Subject: [PATCH 1/2] 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 000000000000..4bcdeb25ea23 --- /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); + } + + } + + + + + +} From 727769c06f45bf007cf2d229deb3fde46559bb87 Mon Sep 17 00:00:00 2001 From: Nimit Arora Date: Sun, 1 Oct 2017 12:45:13 +0530 Subject: [PATCH 2/2] Added algorithm to reverse a stack using recursion --- Misc/ReverseStackUsingRecursion.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Misc/ReverseStackUsingRecursion.java b/Misc/ReverseStackUsingRecursion.java index 4bcdeb25ea23..bb9f606a3ab9 100644 --- a/Misc/ReverseStackUsingRecursion.java +++ b/Misc/ReverseStackUsingRecursion.java @@ -1,4 +1,4 @@ -package stacks_and_queues; +/* Program to reverse a Stack using Recursion*/ import java.util.Stack; @@ -38,7 +38,7 @@ public static void main(String[] args) { //Function Used to reverse Stack Using Recursion private static void reverseUsingRecursion(Stack stack) { - if(stack.isEmpty()) + if(stack.isEmpty()) // If stack is empty then return { return; } @@ -60,7 +60,7 @@ private static void insertAtEnd(int temptop) { int temp = stack.peek(); /* All the items are stored in call stack until we reach end*/ stack.pop(); - insertAtEnd(temptop); + insertAtEnd(temptop); //Recursive call stack.push(temp); }