How should one go into learning algorithms and data structures? What do you think is an efficient way to do so?
First, if you aren't taking a course, get a good book that has a lot of exercises. Use the exercises to guide your learning. Try to find a way to get some feedback on your attempts. 

The way you learn just about anything deeply is to get a lot of reinforcement and feedback. 

On the other hand, it is seldom necessary with today's languages and libraries to implement standard data structures. It is however, necessary to understand the fundamental of each and their relationship to various sorts of efficiencies when applied to various sorts of problems. 

One way to get a deep understanding is to learn the technique of developing algorithms (not just data structures) from pre and post conditions. 

My go-to book for doing that is by David Gries. It isn't cheap, but it can change the way you think about programs. I've mentioned it elsewhere here. 

If you don't have other ways to get feedback, you might be able to form a group of like minded people who exchange work and comment on each other's attempts.