si saves de punteros, no tendras problemas con listas, por lo general se le llama lista de punteros a una "coleccion" de punteros a Structuras que se enlasan entre si, pueden ser enlasados simples o dobles. son muy utliles ya que tu unico limite es la memoria que tengas disponible
una defenicion muy general de una estructura de una lista es por eje:
struct Nodo
{
int Index; // esta es tu Data
Nodo *Sig; // Puntero a un Siguiente Nodo
};
el tema es largo para hacer un tutorial aqui, pero en la web o inclusive aqui en la webdelprogramador hay muchos fuentes referidos a esto, yo hice una lista de punteros pero sus datos eran no de un solo tipo si no de cualquier tipo , osea mi tipo de dato era un Void* , el tema de punteros es un punto muy fuerte de C/C++ y su punto debil ,un puntero que mandes a un mal lugar puede destruir tu programa,y si queres aprender mas tenes arboles, Grafos, Programacion de Interrupciones, Puertos(por Ej:Programacion de Placas de sonido), C/C++ es un lenguaje de proposito general , el unico limite es tu imaginacion.
Saludos.