Generic stack
Sun Jun 09 2024 09:42:49 GMT+0000 (Coordinated Universal Time)
Saved by @login
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 T peek() {
if (top == -1) {
System.out.println("Stack is empty.");
return null;
} else {
return stackArray[top];
}
}
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 T peek() {
if (top == null) {
System.out.println("Stack is empty.");
return null;
} else {
return top.data;
}
}
public boolean isEmpty() {
return top == null;
}
}
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("ARRAY....");
GenericStackArray<Integer> intArrayStack = new GenericStackArray<>(10);
intArrayStack.push(1);
intArrayStack.push(2);
System.out.println(intArrayStack.pop()); // Output: 2
System.out.println(intArrayStack.peek()); // Output: 1
GenericStackArray<Double> doubleArrayStack = new GenericStackArray<>(10);
doubleArrayStack.push(1.1);
doubleArrayStack.push(2.2);
System.out.println(doubleArrayStack.pop()); // Output: 2.2
System.out.println(doubleArrayStack.peek()); // Output: 1.1
GenericStackArray<String> stringArrayStack = new GenericStackArray<>(10);
stringArrayStack.push("Hello");
stringArrayStack.push("World");
System.out.println(stringArrayStack.pop()); // Output: World
System.out.println(stringArrayStack.peek()); // Output: Hello
System.out.println("\nLINKED LIST....");
// Linked list-based stack
GenericStackLinkedList<Integer> intLinkedListStack = new GenericStackLinkedList<>();
intLinkedListStack.push(1);
intLinkedListStack.push(2);
System.out.println(intLinkedListStack.pop()); // Output: 2
System.out.println(intLinkedListStack.peek()); // Output: 1
GenericStackLinkedList<Double> doubleLinkedListStack = new GenericStackLinkedList<>();
doubleLinkedListStack.push(1.1);
doubleLinkedListStack.push(2.2);
System.out.println(doubleLinkedListStack.pop()); // Output: 2.2
System.out.println(doubleLinkedListStack.peek()); // Output: 1.1
GenericStackLinkedList<String> stringLinkedListStack = new GenericStackLinkedList<>();
stringLinkedListStack.push("Hello");
stringLinkedListStack.push("World");
System.out.println(stringLinkedListStack.pop()); // Output: World
System.out.println(stringLinkedListStack.peek()); // Output: Hello
}
}



Comments