TL;DR Get your text editor out, and start writing code. There's absolutely no magic involved, you need to practise.
Fundamentally, you are overlooking what programming is. Programming is giving a computer a very specific set of instructions. A computer will do exactly what you tell it to, and nothing else.
When you explain a concept to someone, you are assuming they have knowledge about something. Since you mentioned your friends: this problem is strengthened. They are probably on the same or similar courses to you, so have a lot of prerequisite knowledge that you're relying on.
Try explaining what a linked list is to a child. The first time you try, they will get very, very confused. If you turn around and explain to them how a train works (each carriage points to another carriage, and each carriage contains people) you will quickly understand where you first went wrong.
Programming is the same. No-one, not even the geniuses in the class, can convert a concept into a program without trying, failing, and learning how to recover. Like everything else in life, we learn from our mistakes. The best programmers are the ones who have spent a lot of time doing it, not the ones who are just naturally gifted. Gifts accelerate the initial learning, but nothing else.
As the comments have pointed out, you need practice. The best thing I would do is go ahead, and implement everything you know. You'll fail hard when you start, perhaps you can't even get one line down, but that is fine. In a few weeks, you'll be able to write this concept almost verbatim from memory. While you think this might be 'cheating': it's not. Why? Because write a short story. Then a week later, try and re-write the same short story, word for word. Good luck with that. The reason you can re-program the same concept again is because your brain has become attuned to writing code, not because you have simply memorised it.
Enough waffle, where would I start?
- Become pro at "hello world". As silly as that sounds, you need to be comfortable with your editor and compiler environment before you begin attacking hard problems
- Start with smaller structures. Do not implement garbage collection as the first thing you do. It'll be like trying to write your first poem in Shakespearian English. It just won't work.
- Wikipedia might be a fantastic place to begin. They generally have a good outline of how concepts work, and sample implementation. For example: http://en.wikipedia.org/wiki/Linked_list
- After you have gone through Linked Lists, Stacks, Queues, Binary Trees and the like, you can begin with your (much harder) problems.
- After all of that, you can just Google "[language] [concept]" and go from there.
- Consider getting a book like "cracking the coding interview". This combines explaining concepts really well, and giving you near-perfect implementations in Java.
Have lots of patience. You will not get it the first time. You will not get it the second time. Imagine you are learning French or Spanish, do not assume that because you can explain concepts really well in English, you'll be able to get a translation dictionary and be able to explain it in French or Spanish equally well.