#include <stdio.h>
#include <stdlib.h>
// Definición de la estructura de un nodo
typedef struct Nodo {
int dato;
struct Nodo *siguiente;
} Nodo;
// Definición de la estructura de la cola
typedef struct Cola {
Nodo *frente;
Nodo *final;
} Cola;
// Función para inicializar una cola
void inicializarCola(Cola *cola) {
cola->frente = NULL;
cola->final = NULL;
}
// Función para insertar un elemento en la cola
void encolar(Cola *cola, int valor) {
Nodo *nuevoNodo = (Nodo *)malloc(sizeof(Nodo));
if (!nuevoNodo) {
printf("Error: No se pudo asignar memoria\n");
return;
}
nuevoNodo->dato = valor;
nuevoNodo->siguiente = NULL;
if (cola->final == NULL) { // Si la cola está vacía
cola->frente = nuevoNodo;
} else {
cola->final->siguiente = nuevoNodo;
}
cola->final = nuevoNodo;
}
// Función para imprimir la cola
void imprimirCola(Cola *cola) {
Nodo *actual = cola->frente;
printf("Cola: ");
while (actual) {
printf("%d -> ", actual->dato);
actual = actual->siguiente;
}
printf("NULL\n");
}
// Función principal
int main() {
Cola miCola;
inicializarCola(&miCola);
printf("\n--- Implementación de una cola con apuntadores ---\n");
printf("Autor: [Tu Nombre]\n\n");
encolar(&miCola, 10);
encolar(&miCola, 20);
encolar(&miCola, 30);
encolar(&miCola, 40);
imprimirCola(&miCola);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIERlZmluaWNpw7NuIGRlIGxhIGVzdHJ1Y3R1cmEgZGUgdW4gbm9kbwp0eXBlZGVmIHN0cnVjdCBOb2RvIHsKICAgIGludCBkYXRvOwogICAgc3RydWN0IE5vZG8gKnNpZ3VpZW50ZTsKfSBOb2RvOwoKLy8gRGVmaW5pY2nDs24gZGUgbGEgZXN0cnVjdHVyYSBkZSBsYSBjb2xhCnR5cGVkZWYgc3RydWN0IENvbGEgewogICAgTm9kbyAqZnJlbnRlOwogICAgTm9kbyAqZmluYWw7Cn0gQ29sYTsKCi8vIEZ1bmNpw7NuIHBhcmEgaW5pY2lhbGl6YXIgdW5hIGNvbGEKdm9pZCBpbmljaWFsaXphckNvbGEoQ29sYSAqY29sYSkgewogICAgY29sYS0+ZnJlbnRlID0gTlVMTDsKICAgIGNvbGEtPmZpbmFsID0gTlVMTDsKfQoKLy8gRnVuY2nDs24gcGFyYSBpbnNlcnRhciB1biBlbGVtZW50byBlbiBsYSBjb2xhCnZvaWQgZW5jb2xhcihDb2xhICpjb2xhLCBpbnQgdmFsb3IpIHsKICAgIE5vZG8gKm51ZXZvTm9kbyA9IChOb2RvICopbWFsbG9jKHNpemVvZihOb2RvKSk7CiAgICBpZiAoIW51ZXZvTm9kbykgewogICAgICAgIHByaW50ZigiRXJyb3I6IE5vIHNlIHB1ZG8gYXNpZ25hciBtZW1vcmlhXG4iKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBudWV2b05vZG8tPmRhdG8gPSB2YWxvcjsKICAgIG51ZXZvTm9kby0+c2lndWllbnRlID0gTlVMTDsKICAgIAogICAgaWYgKGNvbGEtPmZpbmFsID09IE5VTEwpIHsgLy8gU2kgbGEgY29sYSBlc3TDoSB2YWPDrWEKICAgICAgICBjb2xhLT5mcmVudGUgPSBudWV2b05vZG87CiAgICB9IGVsc2UgewogICAgICAgIGNvbGEtPmZpbmFsLT5zaWd1aWVudGUgPSBudWV2b05vZG87CiAgICB9CiAgICBjb2xhLT5maW5hbCA9IG51ZXZvTm9kbzsKfQoKLy8gRnVuY2nDs24gcGFyYSBpbXByaW1pciBsYSBjb2xhCnZvaWQgaW1wcmltaXJDb2xhKENvbGEgKmNvbGEpIHsKICAgIE5vZG8gKmFjdHVhbCA9IGNvbGEtPmZyZW50ZTsKICAgIHByaW50ZigiQ29sYTogIik7CiAgICB3aGlsZSAoYWN0dWFsKSB7CiAgICAgICAgcHJpbnRmKCIlZCAtPiAiLCBhY3R1YWwtPmRhdG8pOwogICAgICAgIGFjdHVhbCA9IGFjdHVhbC0+c2lndWllbnRlOwogICAgfQogICAgcHJpbnRmKCJOVUxMXG4iKTsKfQoKLy8gRnVuY2nDs24gcHJpbmNpcGFsCmludCBtYWluKCkgewogICAgQ29sYSBtaUNvbGE7CiAgICBpbmljaWFsaXphckNvbGEoJm1pQ29sYSk7CiAgICAKICAgIHByaW50ZigiXG4tLS0gSW1wbGVtZW50YWNpw7NuIGRlIHVuYSBjb2xhIGNvbiBhcHVudGFkb3JlcyAtLS1cbiIpOwogICAgcHJpbnRmKCJBdXRvcjogW1R1IE5vbWJyZV1cblxuIik7CiAgICAKICAgIGVuY29sYXIoJm1pQ29sYSwgMTApOwogICAgZW5jb2xhcigmbWlDb2xhLCAyMCk7CiAgICBlbmNvbGFyKCZtaUNvbGEsIDMwKTsKICAgIGVuY29sYXIoJm1pQ29sYSwgNDApOwogICAgCiAgICBpbXByaW1pckNvbGEoJm1pQ29sYSk7CiAgICAKICAgIHJldHVybiAwOwp9Cg==