/5a)user-defined generic stack
Sun May 26 2024 20:27:14 GMT+0000 (Coordinated Universal Time)
Saved by @prabhas
import java.util.Scanner;
class Node<T> {
T data;
Node<T> next;
public Node(T data) {
this.data = data;
this.next = null;
}
}
class GenericStackArray<T> {
private T[] stackArray;
private int top;
private int maxSize;
@SuppressWarnings("unchecked")
public GenericStackArray(int size) {
this.maxSize = size;
this.stackArray = (T[]) new Object[maxSize];
this.top = -1;
}
public void push(T item) {
if (top < maxSize - 1) {
stackArray[++top] = item;
} else {
System.out.println("Stack Overflow");
}
}
public T pop() {
if (top >= 0) {
return stackArray[top--];
} else {
System.out.println("Stack Underflow");
return null;
}
}
public boolean isEmpty() {
return top == -1;
}
}
class GenericStackLinkedList<T> {
private Node<T> top;
public GenericStackLinkedList() {
this.top = null;
}
public void push(T item) {
Node<T> newNode = new Node<>(item);
newNode.next = top;
top = newNode;
}
public T pop() {
if (top == null) {
System.out.println("Stack Underflow");
return null;
}
T data = top.data;
top = top.next;
return data;
}
public boolean isEmpty() {
return top == null;
}
}
public class GenericStackExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
GenericStackArray<Integer> intStackArray = new GenericStackArray<>(5);
GenericStackLinkedList<Integer> intStackLinkedList = new GenericStackLinkedList<>();
System.out.println("Enter integers to push into the array stack (enter -1 to stop):");
int num;
while (true) {
num = scanner.nextInt();
if (num == -1) break;
intStackArray.push(num);
}
System.out.println("Enter integers to push into the linked list stack (enter -1 to stop):");
while (true) {
num = scanner.nextInt();
if (num == -1) break;
intStackLinkedList.push(num);
}
System.out.println("Popping from array stack:");
while (!intStackArray.isEmpty()) {
System.out.println(intStackArray.pop());
}
System.out.println("Popping from linked list stack:");
while (!intStackLinkedList.isEmpty()) {
System.out.println(intStackLinkedList.pop());
}
}
}



Comments