No seria mas facil, pregunto.
Tienes una estructura libro. Cojes, cargas el fichero en memoria como una lista dinamica de libros. Antes de introducir el libro, miras si existe en la lista, si existe no lo añades, si no existe, lo añades a la lista y lo añades al fichero.
Lo del vector lo dice para que no guardes el fichero en un vector en lugar de en una lista. Mas que nada para no tener que ir ampliando el vector o reservar un vector de un tamaño mucho mas brutal.
De esta manera lees una vez el fichero (al iniciar el programa) y ya no lo lees mas.