I'd learn DataStructures first for sure. I'm not sure I'd worry about the Linked Lists and such, since they're a little different in .NET. In C/C++ where you had pointers, you had more control to create these specialized types of objects. In .NET it's much simpler, in that you can create an object with a reference to itself, to keep track of your list. Or, you can use built-in collection objects for many simple collection types (Stack, Queue, Hashtable, etc.).
The API is good to know as well, but it's generally for when you need to do something specific that .NET doesn't expose for you. So just learning the Win32 API might be fun but you won't need many of them. There might be some benefit to knowing what it has available in case you want to take advantage of it when an otherwise unsolvable problem comes up. But, I think you'd get a much greater benefit as a programmer/developer learning the core coding techniques.
Besides data structure, learning good .NET structured programming is good to know, too. Meaning, when to create classes, methods, properties, etc. is important and can't readily be taught by books or school.
Before learning the API, I'd learn about the .NET framework (all the built-in classes). I've only had to use the API 2 times so far in the past year - a couple of calls to do some subclassing (to intercept all user input to handle auto-timeouts) and a few to find a message box window handle to shut it down (when an app times out and I want to kill a user's session to force them to log back in). Those cases are rare and I couldn't tell you without looking them up again what the calls are or how they work. The point being that the API is useful, but you probably won't remember the exactp API calls very often. Good programming lasts forever, regardless of language or platform.
-Nerseus