I don't think that question is at all goofy, it sounds like a pretty reasonable interview question to me. The idea that people think questions that require only basic knowledge of fundamental data structures are unreasonable is pretty troubling though. I guess that's the lagacy of things like the Java Collections framework. As for books, any data structures & algorithm book should cover this stuff.
Taking a look at my bookshelf the ones I have are:
* Classic Data Structures in C++, Timothy Budd
* Data Structures, Algorithms, and Applications in C++, Sahni Sartaj
* Introduction to Algorithms, Cormen, Leiserson, & Rivest
THe first two may well be out of print at this point and I suspect you're not really into C++ (not nearly as popular now as it was 10 years ago when I was in school). I'm not even sure that they first two are that great, but they're what's on my shelf. Intro to Algorithms, as noted above, is mostly restricted to algorithms (with the notable exception of trees) and the pseudo code it uses for examples I found somewhat difficult. It aslo spends a lot of time with proofs using discrete math. I've never used discrete math or done proofs professionally, though I'm sure those skills have proved useful to those in more difficult parts of the field.
I got the sense you were geniuinely interested in learning the concepts behind this stuff. If it's more because you just want to pass interview questions a better bet is something like
* Programming Interviews Exposed
but to me that's kind of like reading hte Cliff Notes for a book you were assigned in school rather than the actual book. It is good if you were already familiar with the concepts (which you said you were not) and just need a little refresher.
EDIT:
Not knowing of anything better, looked around for old syllabi from my school and found this from a recent instance of one of the courses I took. It has some material, including homework assignments, and lecture notes, that may be of interest, but no answers to the assignments unfortunately:
http://irl.eecs.umich.edu/jamin/courses/eecs281/syllabus.html