In terms of data structures, well there's so many books that offer wonderful insight on the topic. And yes, I'm suggesting a book that you hold in your hand.
From personal experience (assuming you have at least some knowledge on computer programmming - i.e. the absolute basics) I would suggest understand these following structures. Dont worry too much if you cannot remember the details offhand but rather know how the internals work. In no particular order.:
Linked list, or lists in general.
This structure is very important as it is used for just about everything. from how your data is stored in databases, to things like ... graphical user interface components like the tree view. It comes in many variations.
Arrays
more basic concept than lists, but can get bit confusing once you add too many dimensions and if they jagged or straight e.g. 2d arrays etc. Fyi.. if you thinking of going .net route arrays (or rather the one from the older framework) are blindingly fast
Actual Data Structures that holds e.g. business data
Start with structs , then before you jump to classes, learn interfaces
Algorithms
The only worthwhile advice I can give here is , algorithms generally fall into various categories. e.g. Searching, Sorting, Updating, Caching etc etc, and most literature starts off with sort and things like bubble sort etc,
but before you do anything else,
try and visualize or see how you would do the thing if it wasn't invented yet. Dont stress too much if you cannot find a self satisfactory answer. Far better computer scientists all sucked at some point as well.
Oh.. last thing, when you more confident in your computing, don't be afraid to dig deep into code and see how things are built. Its very interesting.
M