molto bene, il tempo trascorso scrivendo attivante il codice da far girare è sempre ben speso, anche quando gli esercizi sono molto semplici, serve a fare pratica e ad acquisire certi automatismi indispensabili al programmatore.
Per rispondere sul libro su algoritmi/strutture dati probabilmente il migliore in assoluto è
Introduzione agli algoritmi e strutture dati [autori Cormen, Leiserson, Rivest, Stein]
però
ASPETTA ad acquistarlo:
è un testo largamente usato nelle Università (Informatica, Ingegneria ecc.),
se non sei uno studente universitario è inutile sobbarcarsi la spesa: per quanto ricordo gli algoritmi sono in pseudocodice (non usano cioè un linguaggio particolare ed è giusto che sia così), inoltre è possibile e probabile che non ti serve.
Serve invece che tu faccia mente locale e ragioni un po' su quello che vuoi fare veramente;
per esempio, se decidi di fare sviluppo web, un libro del genere (circa 1300 pagine molto impegnative) è inutile.
Se vuoi sviluppare per Android, meglio passare a tutt'altro e fare delle app "giocattolo" per far pratica.
Tieni inoltre conto che il C è senza dubbio un pilastro per un programmatore, tuttavia se non sviluppi codice particolare (giochi, programmi di sistema, driver ecc.) è tempo di passare ad altro. Insomma prima di spendere soldi e perdere tempo con cose che forse non ti serviranno mai, cerca prima di capire cosa vuoi fare.