I like dcp's answer.
The best way to wrap your head around data structures is to write mini examples. Even if you copy them from your book, if you can get them to work and compile, and you typed them in with your own fingers, you will learn a lot.
As you read your book, and after each lecture, write the shortest programs you can that create and work with (display, use, etc.) the data structure you just learned about.
Then when you have to do your actual assignments you'll learn even more as you try and take your mini examples and plug them into the solving of the assignment problems.
I think writing the shortest / smallest possible piece of working code for individual data structures is very useful. Also, don't be afraid to copy code (for your own edification, not for your turned in assigments).... If you copy by typing and not copy pasting, you do end up learning a lot, since it forces you to look at each character in the code.
If entire data structures seem like "too much" to wrap your head around, then start by writing mini examples of the components of the Data structures. So store a book title with a pointer. Then store many book titles with pointers to pointers. Read a book title with square bracket notation and pointer arithmetic. Use recursion in simple functions where it is clear what is going on..... For example recursion to show the factorial of a number is simpler to wrap you head around than recursion to show a binary tree (in my opinion).....
You'll see what your problem areas are, and try and isolate them to as small and specific of a thing as you can, and then write as short a program that you can that deals with that problem area..... and then build up.
Your lectures are about entire data structures... giant Cummulus cloud banks of theory.... so, essentially they are top down. Isolating little problems of syntax and usage in mini problems is bottom up. So your teacher helps you attack from the top, you attack from the bottom by practicing, and pretty soon there's nothing in the middle!