| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- public class Stack<T> {
- private Node<T> top; // Puntero al tope de la pila
- private int size; // Tamaño de la pila
- // Clase interna para el nodo
- private static class Node<T> {
- T data;
- Node<T> next;
- Node(T data) {
- this.data = data;
- this.next = null;
- }
- }
- // Constructor para la pila
- public Stack() {
- top = null;
- size = 0;
- }
- // Método para agregar un elemento a la pila
- public void push(T data) {
- Node<T> newNode = new Node<>(data);
- if (isEmpty()) {
- top = newNode;
- } else {
- newNode.next = top;
- top = newNode;
- }
- size++;
- }
- // Método para eliminar un elemento de la pila
- public T pop() {
- if (isEmpty()) {
- throw new IllegalStateException("La pila está vacía");
- }
- T data = top.data;
- top = top.next;
- size--;
- return data;
- }
- // Método para verificar si la pila está vacía
- public boolean isEmpty() {
- return top == null;
- }
- // Método para obtener el tamaño de la pila
- public int size() {
- return size;
- }
- // Método para imprimir los elementos de la pila
- public void printStack() {
- Node<T> current = top;
- while (current != null) {
- System.out.print(current.data + " ");
- current = current.next;
- }
- System.out.println();
- }
- // Método main para probar la implementación de la pila
- public static void main(String[] args) {
- Stack<Integer> stack = new Stack<>();
- stack.push(1);
- stack.push(2);
- stack.push(3);
- System.out.println("Tamaño de la pila: " + stack.size());
- stack.printStack();
- System.out.println("Desapilando: " + stack.pop());
- System.out.println("Desapilando: " + stack.pop());
- System.out.println("Tamaño de la pila después de desapilar dos elementos: " + stack.size());
- stack.printStack();
- }
- }
|