//GenericLinkedListStack import java.util.LinkedList; public class GenericLinkedListStack<T> { private LinkedList<T> stackList; public GenericLinkedListStack() { stackList = new LinkedList<>(); } public void push(T value) { stackList.addFirst(value); } public T pop() { if (isEmpty()) { System.out.println("Stack is empty."); return null; } else { return stackList.removeFirst(); } } public T peek() { if (isEmpty()) { System.out.println("Stack is empty."); return null; } else { return stackList.getFirst(); } } public boolean isEmpty() { return stackList.isEmpty(); } public int size() { return stackList.size(); } } //Main public class Main { public static void main(String[] args) { // Stack for Integers GenericLinkedListStack<Integer> intStack = new GenericLinkedListStack<>(); intStack.push(1); intStack.push(2); System.out.println(intStack.pop()); // Output: 2 System.out.println(intStack.peek()); // Output: 1 // Stack for Doubles GenericLinkedListStack<Double> doubleStack = new GenericLinkedListStack<>(); doubleStack.push(1.1); doubleStack.push(2.2); System.out.println(doubleStack.pop()); // Output: 2.2 System.out.println(doubleStack.peek()); // Output: 1.1 // Stack for Strings GenericLinkedListStack<String> stringStack = new GenericLinkedListStack<>(); stringStack.push("Hello"); stringStack.push("World"); System.out.println(stringStack.pop()); // Output: World System.out.println(stringStack.peek()); // Output: Hello } }