// Define la clase Nodo que representa cada cliente en la lista.
class Nodo {
    String nombre;      // Nombre del cliente
    int habitacion;     // Número de la habitación del cliente
    Nodo siguiente;     // Referencia al siguiente nodo en la lista

    // Constructor de la clase Nodo
    public Nodo(String nombre, int habitacion) {
        this.nombre = nombre;           // Asigna el nombre del cliente
        this.habitacion = habitacion;   // Asigna el número de habitación
        this.siguiente = null;          // Inicializa el siguiente nodo como null
    }
}

// Define la clase ListaEnlazada para manejar la lista de clientes.
class ListaEnlazada {
    Nodo cabeza;    // Primer nodo de la lista enlazada

    // Constructor de la clase ListaEnlazada
    public ListaEnlazada() {
        cabeza = null;    // Inicializa la cabeza de la lista como null
    }

    // Método para agregar un nuevo cliente a la lista en orden alfabético
    public void agregarCliente(String nombre, int habitacion) {
        Nodo nuevoNodo = new Nodo(nombre, habitacion);  // Crea un nuevo nodo
        // Inserta el nodo al principio si la lista está vacía o si el nuevo nodo va antes de la cabeza
        if (cabeza == null || cabeza.nombre.compareTo(nuevoNodo.nombre) > 0) {
            nuevoNodo.siguiente = cabeza;
            cabeza = nuevoNodo;
        } else {
            Nodo actual = cabeza;
            // Busca el lugar correcto para insertar el nuevo nodo
            while (actual.siguiente != null && actual.siguiente.nombre.compareTo(nuevoNodo.nombre) < 0) {
                actual = actual.siguiente;
            }
            // Inserta el nuevo nodo en la posición encontrada
            nuevoNodo.siguiente = actual.siguiente;
            actual.siguiente = nuevoNodo;
        }
    }

    // Método para imprimir la lista de clientes en formato tabular
    public void imprimirClientes() {
        Nodo actual = cabeza;
        System.out.println("+----------------+-------------+");
        System.out.println("| Nombre Cliente | Habitación  |");
        System.out.println("+----------------+-------------+");
        while (actual != null) {
            // Formatea y muestra los datos del cliente
            System.out.format("| %-14s | %-11d |\n", actual.nombre, actual.habitacion);
            actual = actual.siguiente;
        }
        System.out.println("+----------------+-------------+");
    }
}

// Clase principal que contiene el método main para ejecutar el programa
public class Main {
    public static void main(String[] args) {
        ListaEnlazada clientesHotel = new ListaEnlazada();  // Crea una lista enlazada
        // Agrega clientes a la lista
        clientesHotel.agregarCliente("Pedro Solís", 105);
        clientesHotel.agregarCliente("Alicia Fonseca", 102);
        clientesHotel.agregarCliente("Brandon Ulate", 201);

        // Imprime la lista de clientes
        clientesHotel.imprimirClientes();
    }
}

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: