diff --git a/JAVA/ReverseStringUsingStack.java b/JAVA/ReverseStringUsingStack.java new file mode 100644 index 0000000..07cca29 --- /dev/null +++ b/JAVA/ReverseStringUsingStack.java @@ -0,0 +1,27 @@ +import java.util.Stack; + +public class ReverseStringUsingStack { + public static String reverseString(String input) { + Stack stack = new Stack<>(); + + // Push each character of the input string onto the stack + for (char c : input.toCharArray()) { + stack.push(c); + } + + // Pop the characters from the stack to build the reversed string + StringBuilder reversedString = new StringBuilder(); + while (!stack.isEmpty()) { + reversedString.append(stack.pop()); + } + + return reversedString.toString(); + } + + public static void main(String[] args) { + String input = "Hello, World!"; + String reversed = reverseString(input); + System.out.println("Original String: " + input); + System.out.println("Reversed String: " + reversed); + } +} diff --git a/JAVA/StackUsingQueue.java b/JAVA/StackUsingQueue.java new file mode 100644 index 0000000..4c12592 --- /dev/null +++ b/JAVA/StackUsingQueue.java @@ -0,0 +1,40 @@ +import java.util.LinkedList; +import java.util.Queue; + +public class StackUsingQueue { + private Queue queue1; + private Queue queue2; + + public StackUsingQueue() { + queue1 = new LinkedList<>(); + queue2 = new LinkedList<>(); + } + + public void push(int element) { + queue2.offer(element); + while (!queue1.isEmpty()) { + queue2.offer(queue1.poll()); + } + Queue temp = queue1; + queue1 = queue2; + queue2 = temp; + } + + public int pop() { + if (queue1.isEmpty()) { + return -1; // Stack is empty + } + return queue1.poll(); + } + + public int top() { + if (queue1.isEmpty()) { + return -1; // Stack is empty + } + return queue1.peek(); + } + + public boolean isEmpty() { + return queue1.isEmpty() && queue2.isEmpty(); + } +}