Computer Engineering student with Holes in my knowledge (i want to improve)
The obvious answer is to get a good textbook on Java data structures. Some are better than others and a few will mislead you. I find John Lewis to be trustworthy (and inexpensive as well).

What you are probably missing is the notion of encapsulation of things in classes and specification by interfaces, both essential to Java and specifically to your quest on algorithms. Some understanding of generics will also help you progress, but that is secondary to encapsulation and the idea of separating interface from implementation. 

There are more advanced books on Algorithms, but the grounding, first, in building data structures and reaching the point where you can understand the java.util library is your current optimal path. 

I would suggest using Java first, rather than C++ as it has fewer traps for the unwary. Java is built at a somewhat more abstract level than C++ and so provides a better way to think about higher level concepts.