Created
November 2, 2019 18:46
-
-
Save hocyadav/34ff84e7f951dea387c18379fc34414b to your computer and use it in GitHub Desktop.
Reverse stack using recursion : 1st insert at bottom of stack method, 2nd function call stack concept used
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* @author Hariom Yadav - Nov 3, 2019 | |
* | |
*/ | |
class Stack1{ | |
//know something | |
int top; | |
int size; | |
String[] stack; | |
//does something | |
Stack1(){ | |
top = -1; size = 10; | |
stack = new String[size]; | |
} | |
void push(String s) { | |
if(top == size-1) { | |
System.out.println("overflow"); return; | |
} | |
stack[++top] = s; | |
} | |
void pop() { | |
if(top == -1) { | |
System.out.println("underflow"); return; | |
} | |
--top; | |
} | |
String top() { | |
if(isEmpty()) { | |
System.out.println("empty"); | |
return "-1"; | |
}else | |
return stack[top]; | |
} | |
boolean isEmpty() { | |
return (top == -1)?true:false; | |
} | |
void traverse() { | |
System.out.print("stack : "); | |
for(int i=0; i<=top; i++) { | |
System.out.print(stack[i]+" "); | |
} | |
System.out.println(""); | |
} | |
} | |
public class Stack_Reverse_usingRecursion { | |
//know something | |
static Stack1 obj = new Stack1(); | |
//does something | |
public static void main(String[] arg) { | |
obj.push("4");obj.traverse(); | |
obj.push("3");obj.traverse(); | |
obj.push("2");obj.traverse(); | |
obj.push("1");obj.traverse(); | |
obj.push("11");obj.traverse(); | |
reverse(obj); | |
obj.traverse(); | |
} | |
//imp : store variable in fun call stack | |
private static void reverse(Stack1 obj) { | |
if(obj.isEmpty()) { | |
return; | |
}else {//1.get top element, 2.delete top element, 3.call 1-2 again(i.e. call recursion), 4.insert_at_bottom | |
String s = obj.top();//1 | |
obj.pop();//2 | |
reverse(obj);//3 | |
insert_at_bottom(s); | |
} | |
} | |
//store variable in fun call stack | |
private static void insert_at_bottom(String s) { | |
if(obj.isEmpty()) { | |
obj.push(s); | |
}else { | |
String topStr = obj.top(); | |
obj.pop(); | |
insert_at_bottom(s); | |
obj.push(topStr); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment