I would personally reccomend you learn Java, although most programming languages will do. Although Algorithms and Data Structures are an important part of programming, they are not the only one. It is useful to be familiar with a programming language when studying any subsection of the software engineering realm, such as A.I. or Data Structures, as it gives you a deeper understanding of the inner workings of the algorithms. It is important to be able to read pseudocode and translate it into actual working code.
The Sun Tutorials are great as they cover a large amount of material, both beginner (see the Language Basics section) and advanced.
This free online Java Textbook is great as it can be viewed online, or offline by downloading a free PDF version.
I would then recommend some practice to fully grasp the language, either by working on some small personal projects (simple text games, utilities, etc.) or by studying some open source code. Sourceforge is great for this.
Also, if you enjoy mathematics, Project Euler is an excellent way of learning Java (or any other language as the challengs can be solved in any language). This will also help you develop the skills necessary to work with algorithms and solve them.
Once you feel you have a good grasp of your language of choice, moving on to Algorithms and Data Structures will not only be easier but more enjoyable. Your ability to translate pseudo-code into working code will come in very useful as you can truly understand the workings of the algorithms and data structures and can implement them in test applications.