I want to implement algorithms and data structures for practice. I have a bunch of textbooks I am working through and although I can understand the idea and theories I can never seem to close the book and implement working code on my own, like people do in ACM programming contests.
I can learn how to write a linked list in C, and forget how to do it two hours later. If I use a higher level language like Python, then I have problems mapping psuedocode because some constructs like pointers don't exist. On the other hand something like C is very complicated and I constantly make mistakes.
I really want to improve my algorithm skills but I feel like I'm never getting any better. Algorithms are important but they're so hard! I must be doing something wrong. I spend a lot of time studying but the concepts never seem to stick. When I compare myself to other contests on the live scoreboards, they're often 10x faster than I am. Any advice?