#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Definición de la estructura para un nodo de la lista
typedef struct Nodo {
char nombre[50]; // Nombre del cliente
int habitacion; // Número de la habitación del cliente
struct Nodo *siguiente; // Puntero al siguiente nodo en la lista
} Nodo;
// Función para crear un nuevo nodo
Nodo* crearNodo(char nombre[], int habitacion) {
Nodo *nuevoNodo = (Nodo*) malloc(sizeof(Nodo));
strcpy(nuevoNodo->nombre, nombre); // Copia el nombre en la estructura
nuevoNodo->habitacion = habitacion; // Asigna el número de habitación
nuevoNodo->siguiente = NULL; // Inicializa el siguiente nodo como NULL
return nuevoNodo;
}
// Función para insertar un nodo en la lista enlazada manteniendo el orden alfabético
void insertarOrdenado(Nodo **cabeza, Nodo *nuevoNodo) {
if (*cabeza == NULL || strcmp((*cabeza)->nombre, nuevoNodo->nombre) > 0) {
// Inserta el nuevo nodo al principio de la lista
nuevoNodo->siguiente = *cabeza;
*cabeza = nuevoNodo;
} else {
// Busca la posición correcta para insertar el nuevo nodo
Nodo *actual = *cabeza;
while (actual->siguiente != NULL && strcmp(actual->siguiente->nombre, nuevoNodo->nombre) < 0) {
actual = actual->siguiente;
}
nuevoNodo->siguiente = actual->siguiente;
actual->siguiente = nuevoNodo;
}
}
// Función para imprimir todos los nodos en la lista
void imprimirClientes(Nodo *cabeza) {
Nodo *actual = cabeza;
printf("+----------------+-------------+\n");
printf("| Nombre Cliente | Habitación |\n");
printf("+----------------+-------------+\n");
while (actual != NULL) {
printf("| %-14s | %-11d |\n", actual->nombre, actual->habitacion);
actual = actual->siguiente;
}
printf("+----------------+-------------+\n");
}
// Función principal del programa
int main() {
Nodo *cabeza = NULL; // Inicializa la lista enlazada como vacía
// Agrega clientes a la lista
insertarOrdenado(&cabeza, crearNodo("Pedro Solís", 105));
insertarOrdenado(&cabeza, crearNodo("Alicia Fonseca", 102));
insertarOrdenado(&cabeza, crearNodo("Brandon Ulate", 201));
// Imprime la lista de clientes
imprimirClientes(cabeza);
return 0;
}
To embed this program on your website, copy the following code and paste it into your website's HTML: