Implementación de lista enlazada 'multipropósito' en C @ pu

Esta no es exactamente una pregunta técnica, ya que sé C lo suficiente como para hacer las cosas que necesito (quiero decir, en términos de no 'dejar que el lenguaje se interponga en tu camino'), por lo que esta pregunta es básicamente un 'qué dirección para tomar 'pregunta.

La situación es: actualmente estoy tomando un curso avanzado de algoritmos y, por el bien de 'crecer como programadores', debo usar C puro para implementar las tareas prácticas (funciona bien: prácticamente cualquier pequeño error que cometas en realidad te obliga a entender completamente lo que estás haciendo para solucionarlo). En el curso de la implementación, obviamente me encuentro con el problema de tener que implementar las estructuras de datos 'básicas' desde cero: en realidad no solo las listas vinculadas, sino también las pilas, los árboles, et

Me estoy centrando en las listas de este tema porque normalmente es una estructura que termino usando mucho en el programa, ya sea como una estructura 'principal' o como una estructura 'auxiliar' para otras más grandes (por ejemplo, un árbol hash que resuelve conflictos mediante el uso de una lista vinculada).

Esto requiere que la lista almacene elementos de muchos tipos diferentes. Asumo aquí como premisa que no quiero volver a codificar la lista para cada tipo. Entonces, puedo proponer estas alternativas:

Hacer una lista de punteros vacíos (poco elegante; más difícil de depurar)Haciendo solo una lista, pero teniendo unaUnió como 'tipo de elemento', que contiene todos los tipos de elementos que usaré en el programa (más fácil de depurar; desperdicia espacio si los elementos no son todos del mismo tamaño)Utilizando una macro de preprocesador para regenerar el código para cada tipo, en el estilo de SGLIB, 'imitando' el STL de C ++ (solución creativa; no desperdicia espacio; los elementos tienen el tipo explícito que realmente son cuando se devuelven; cualquier cambio en el código de la lista puede ser realmente dramático)Su idea / solución

Para aclarar la pregunta: ¿cuál de los anteriores es mejor?

PS: Dado que básicamente estoy en un contexto académico, también estoy muy interesado en la opinión de las personas que trabajan con C puro en la industria. Entiendo que la mayoría de los programadores de C puros están en el área de dispositivos integrados, donde no creo que este tipo de problema que estoy enfrentando sea común. Sin embargo, si alguien por ahí sabe cómo se hace 'en el mundo real', estaría muy interesado en su opinión.

Respuestas a la pregunta(9)

Su respuesta a la pregunta