Stack.java 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. class Node {
  2. long data; // El dato que se almacenará en el nodo
  3. Node next; // Referencia al siguiente nodo en la lista
  4. public Node(long data) {
  5. this.data = data;
  6. this.next = null;
  7. }
  8. }
  9. public class Stack {
  10. private Node top; // Referencia al nodo superior (cima) del stack
  11. // Constructor para inicializar un stack vacío
  12. public Stack() {
  13. top = null;
  14. }
  15. // Método para añadir un elemento al stack
  16. public void push(long j) {
  17. Node newNode = new Node(j);
  18. if (top == null) {
  19. top = newNode; // Si el stack está vacío, el nuevo nodo será la cima
  20. } else {
  21. newNode.next = top; // El siguiente del nuevo nodo apunta al actual nodo superior
  22. top = newNode; // El nuevo nodo se convierte en la nueva cima
  23. }
  24. }
  25. // Método para eliminar un elemento del stack
  26. public long pop() {
  27. if (top == null) {
  28. System.out.println("El stack está vacío.");
  29. return -1; // Valor especial para indicar error (stack vacío)
  30. } else {
  31. long temp = top.data; // Guarda el dato de la cima en una variable temporal
  32. top = top.next; // Mueve la cima al siguiente nodo
  33. return temp; // Devuelve el dato eliminado
  34. }
  35. }
  36. // Método para verificar si el stack está vacío
  37. public boolean isEmpty() {
  38. return (top == null);
  39. }
  40. // Método para obtener el elemento en la cima del stack sin eliminarlo
  41. public long peek() {
  42. if (top == null) {
  43. System.out.println("El stack está vacío.");
  44. return -1; // Valor especial para indicar error (stack vacío)
  45. } else {
  46. return top.data;
  47. }
  48. }
  49. public static void main(String[] args) {
  50. Stack stack = new Stack(); // Crear un stack vacío
  51. stack.push(10);
  52. stack.push(20);
  53. stack.push(30);
  54. stack.push(40);
  55. stack.push(50);
  56. while (!stack.isEmpty()) {
  57. System.out.print(stack.pop() + " "); // Debería imprimir 50 40 30 20 10
  58. }
  59. }
  60. }