Existen dos opciones creo
1. Puedes usar listas ligadas e ir ordenando los datos al insertarlos, usando arboles binarios, asi, la busqueda sera mas facil. Al final si no quieres perder tu informacion la puedes guardar en archivos. Para esto debes cargar la lista con la informacion de los archivos al iniciar el programa.
2. Una forma que me parece mas facil es usar una base de datos, asi la informacion la almacenas en la base y las busquedas son faciles de hacer, puesto que la BD lo hace todo.
Te recomiendo usar la 2da. opcion.
Espero te sirva.