I'm learning C# at the moment and really enjoying it. I'm wondering though how I can develop my own algorithms. do I need to read on data structures and algorithms?
If your looking for a foundation on which it would make these languages (C#, Java, etc.) easier to learn, I would pick up a book on Object Oriented Programming in general and read the concepts and purposes of OOP. Knowing how OOP is supposed to work, why it works, would make learning C# and Java much easier for you, instead of trying to understand the language first.
The .NET framework is already rich enough in datastructures to serve all your basic programming needs. Learn from it through MSDN. If you can't find what you want, you could start thinking about your own datastructures. Plenty of stuff on the web. This is an example.
@Kru, yeah sometimes, you get to start learning the basics of a particular programming language with the package of OOP stuff( inheritance, Polymorphism, Encapsulation). Then at some point in time, you try implementing an algorithm that you want to use to solve your a problem. You just feel like you're stuck and can't go anywhere.
Thanks for the suggestion anyway, someone might benefit from it.