Though a language independant book will certainly do the trick,
you should consider a Java-based book for the simple fact that many books relate their code to C or C++. The probelm here is that lined list implementations, an the like, as described in these texts will most likely be based on using pointers. In Java, however, you need to use iterator objects since you do not have access to pointers directly. A small detail, but it affects the implementation of lists, trees, etc. This book served me well during my CS degree.
Data Structures & Algorithm Analysis in Java
by Mark Allen Weiss
Just a thought.

Sean