| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- class Node {
- long data; // El dato que se almacenará en el nodo
- Node next; // Referencia al siguiente nodo en la lista
- public Node(long data) {
- this.data = data;
- this.next = null;
- }
- }
- public class Stack {
- private Node top; // Referencia al nodo superior (cima) del stack
- // Constructor para inicializar un stack vacío
- public Stack() {
- top = null;
- }
- // Método para añadir un elemento al stack
- public void push(long j) {
- Node newNode = new Node(j);
- if (top == null) {
- top = newNode; // Si el stack está vacío, el nuevo nodo será la cima
- } else {
- newNode.next = top; // El siguiente del nuevo nodo apunta al actual nodo superior
- top = newNode; // El nuevo nodo se convierte en la nueva cima
- }
- }
- // Método para eliminar un elemento del stack
- public long pop() {
- if (top == null) {
- System.out.println("El stack está vacío.");
- return -1; // Valor especial para indicar error (stack vacío)
- } else {
- long temp = top.data; // Guarda el dato de la cima en una variable temporal
- top = top.next; // Mueve la cima al siguiente nodo
- return temp; // Devuelve el dato eliminado
- }
- }
- // Método para verificar si el stack está vacío
- public boolean isEmpty() {
- return (top == null);
- }
- // Método para obtener el elemento en la cima del stack sin eliminarlo
- public long peek() {
- if (top == null) {
- System.out.println("El stack está vacío.");
- return -1; // Valor especial para indicar error (stack vacío)
- } else {
- return top.data;
- }
- }
- public static void main(String[] args) {
- Stack stack = new Stack(); // Crear un stack vacío
- stack.push(10);
- stack.push(20);
- stack.push(30);
- stack.push(40);
- stack.push(50);
- while (!stack.isEmpty()) {
- System.out.print(stack.pop() + " "); // Debería imprimir 50 40 30 20 10
- }
- }
- }
|