Lista simplemente enlazada en C: ejercicio resuelto con inserción y borrado

Lista simplemente enlazada en C: ejercicio resuelto

Si buscas lista simplemente enlazada en C ejercicio resuelto, este ejemplo cubre operaciones básicas reales: insertar, buscar y borrar.

Enunciado

Implementa una lista enlazada simple con funciones para:

  • insertar al inicio,
  • buscar un valor,
  • borrar un nodo,
  • liberar memoria.

Solución en C

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h>
#include <stdlib.h>

typedef struct Nodo {
    int valor;
    struct Nodo *sig;
} Nodo;

Nodo *insertar_inicio(Nodo *head, int valor) {
    Nodo *n = malloc(sizeof(Nodo));
    if (!n) return head;
    n->valor = valor;
    n->sig = head;
    return n;
}

Nodo *borrar_valor(Nodo *head, int valor) {
    Nodo *act = head, *prev = NULL;
    while (act && act->valor != valor) {
        prev = act;
        act = act->sig;
    }
    if (!act) return head;
    if (!prev) head = act->sig;
    else prev->sig = act->sig;
    free(act);
    return head;
}

int contiene(Nodo *head, int valor) {
    while (head) {
        if (head->valor == valor) return 1;
        head = head->sig;
    }
    return 0;
}

void imprimir(Nodo *head) {
    while (head) {
        printf("%d ", head->valor);
        head = head->sig;
    }
    printf("\n");
}

void liberar(Nodo *head) {
    while (head) {
        Nodo *tmp = head;
        head = head->sig;
        free(tmp);
    }
}

int main(void) {
    Nodo *lista = NULL;
    lista = insertar_inicio(lista, 30);
    lista = insertar_inicio(lista, 20);
    lista = insertar_inicio(lista, 10);

    printf("Contiene 20: %d\n", contiene(lista, 20));
    lista = borrar_valor(lista, 20);
    imprimir(lista);

    liberar(lista);
    return 0;
}

Salida esperada

1
2
Contiene 20: 1
10 30

Errores frecuentes

  • Perder el nuevo head al insertar o borrar.
  • No tratar el borrado del primer nodo.
  • No liberar memoria al final.

Aplicación práctica

Las listas simples se usan en colas de trabajo ligeras y procesamiento incremental de eventos.

Siguiente ejercicio recomendado

Práctica guiada y libro completo

Si quieres una ruta completa con progresión real de dificultad:

FAQ

¿Este ejercicio sirve para entrevistas y exámenes de C?

Sí. Trabaja patrones que aparecen mucho en prácticas, entrevistas técnicas y evaluaciones de programación en C.

¿Dónde seguir con más ejercicios resueltos de C?

En Programación en C en 100 ejercicios resueltos y en Ejercicios C. Kindle Unlimited: Ver en Amazon.

¿Cómo practicar este tipo de ejercicio para mejorar más rápido?

Empieza con entradas pequeñas, prueba casos límite (vacío, un elemento y capacidad máxima) y luego reescribe la solución sin copiarla.