Ejercicios avanzados C

  1. Implementación de una lista enlazada:

    • Crea una estructura Nodo que contenga un valor entero y un puntero al siguiente nodo.
    • Implementa funciones para:
      • Insertar un nodo al inicio de la lista.
      • Insertar un nodo al final de la lista.
      • Eliminar un nodo dado su valor.
      • Imprimir todos los elementos de la lista.
  2. Manejo de archivos:

    • Crea un programa que lea un archivo de texto línea por línea y cuente cuántas líneas contiene el archivo.
    • Modifica el programa para contar también cuántas palabras hay en total en el archivo (considerando que las palabras están separadas por espacios en blanco).
  3. Gestión dinámica de memoria:

    • Escribe un programa que pida al usuario ingresar un número entero positivo n.
    • Luego, usa la función malloc para reservar memoria suficiente para un arreglo de n enteros.
    • Pide al usuario que ingrese n números y almacénalos en el arreglo.
    • Finalmente, libera la memoria utilizando la función free.
  4. Ordenamiento avanzado:

    • Implementa el algoritmo de ordenamiento rápido (QuickSort) para ordenar un arreglo de números enteros.
    • Verifica su funcionamiento con diferentes conjuntos de datos y mide su eficiencia en términos de tiempo de ejecución.
  5. Uso de estructuras y punteros:

    • Define una estructura Fecha que contenga tres campos: día, mes y año.
    • Escribe funciones para comparar dos fechas y determinar cuál es anterior.
    • Crea un programa que ordene un arreglo de fechas utilizando estas funciones de comparación.
  6. Interacción con el sistema operativo:

    • Crea un programa que utilice la función fork() para crear un proceso hijo.
    • En el proceso hijo, imprime un mensaje.
    • En el proceso padre, espera a que el hijo termine y luego imprime otro mensaje.
  7. Implementación de estructuras de datos avanzadas:

    • Implementa un árbol binario de búsqueda en C.
    • Escribe funciones para insertar nodos, buscar un valor en el árbol y recorrerlo en orden.
  8. Programación concurrente:

    • Crea un programa que utilice hilos (threads) en C.
    • Implementa una función que calcule la suma de los elementos de un arreglo usando múltiples hilos.
    • Compara el rendimiento de tu implementación con la versión secuencial.
  9. Criptografía básica:

    • Implementa un programa que cifre y descifre texto utilizando el cifrado César.
    • El usuario debe poder elegir el desplazamiento para cifrar el texto.
  10. Manipulación de cadenas avanzada:

    • Escribe una función en C que reciba una cadena de caracteres y determine si es un palíndromo, ignorando espacios, mayúsculas y minúsculas.