La idea de la lista simple es buena, claro que mejor si es programada orientada a objetos y mejor si usas algo que ya esté hecho, vamos que debe haber algún objeto que trabaje con listas de cadenas y las pueda leer de un archivo de texto plano
La idea es tener una lista estática de referencias a los objetos cadena. La lista tendría que tener un tamaño razonable, no exagerar pero que cubra un buen porcentaje de casos, cuando se necesite una lista más grande simplemente primero reservamos memoria para otra lista estática más grande y copiamos EN BLOQUE las referencias de memoria (no las cadena) a la lista extendida. Luego liberamos la memoria de la lista chica.
Los identificadores en realidad serían la posicion que ocupe la refenrencia a la cadena en la lista de referencias a cadenas. Así si quieres borrar de la 5 a la 9 simplemente primero liberas las cadenas referenciadas de las posiciones 5 a 9 y luego copias en bloque las referencias de la 10 para arriba sobreescribiendo las referencias de memoria a las cadenas. La 10 terminaría siendo la 5 y así sucesivamente. Para insertar primero creas tu objeto cadena y luego desplazas la lista de referencias a cadenas (copias en bloque la lista de referencias) haciendo un lugar para la nueva referencia. Si necesitas más espacio: reservar una lista más grande de referencias, copiar y luego liberar la que quedo chica.
Para ordenar simplemente ordenamos las referencias a los objetos cadena, todo eso dentro de un objeto como "CMiListaCadenas".
Ventajas:
+ Es mucho más simple de implementar que listas.
+ El acceso al elemento "n" es directo.
+ La administración de memoria dinámica no es complicada.
Desventajas:
+ No aplicable a listas gigantes (millones de elementos), hasta 10000 líneas es razonable (y definitivamente, dependiendo de lo que estés haciendo, ya te darás cuenta si esto es suficiente o es poco) ya que al insertar una cadena o borrar otra sólo moverías en memoria un máximo 40KB de datos con 10000 líneas lo que no es nada considerando lo que se mueve al poner una imagen en pantalla.
+ Si el número mínimo aceptable de inserciones y eliminaciones de nodos va por cientos de miles por segundo no es recomendable, depende de lo que estés haciendo. Hay que ver si al hacer "click" el usuario causa que se inserten y borren elementos por millones, por miles o sólo algunos cuantos.