You are on page 1of 3

import java.util.

*;

class Stack {
private List<Integer> items = new ArrayList<>();

public void push(int item) {


items.add(item);
}

public int pop() {


if (!isEmpty()) {
return items.remove(items.size() - 1);
} else {
throw new NoSuchElementException("Stack is empty");
}
}

public boolean isEmpty() {


return items.isEmpty();
}
}

class Queue {
private List<Integer> items = new ArrayList<>();
public void enqueue(int item) {
items.add(item);
}

public int dequeue() {


if (!isEmpty()) {
return items.remove(0);
} else {
throw new NoSuchElementException("Queue is empty");
}
}

public boolean isEmpty() {


return items.isEmpty();
}
}

public class StackQueueExample {


public static List<Integer> reverseList(List<Integer> numbers) {
Stack stack = new Stack();
Queue queue = new Queue();

for (int num : numbers) {


stack.push(num);
}
while (!stack.isEmpty()) {
queue.enqueue(stack.pop());
}

List<Integer> reversedNumbers = new ArrayList<>();


while (!queue.isEmpty()) {
reversedNumbers.add(queue.dequeue());
}

return reversedNumbers;
}

public static void main(String[] args) {


List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
System.out.println("Original List: " + numbers);
List<Integer> reversedNumbers = reverseList(numbers);
System.out.println("Reversed List: " + reversedNumbers);
}
}

You might also like