It might seem completely dated with all its examples written in the now outmoded Pascal programming language (well, unless you are one of those Delphi zealot trying to resist to the Java/.NET dominance), but it is still highly recommended.
It is the single book I learnt most from when I was a freshman studying Computer Science at my local University (when Pascal was already declining, I'm not so old ;-). I wish more recent books were as good as this one, but I have not found a single book so focused and, at the same time, so broad in scope as this one.
Wirth covers programming fundamentals (including recursion), many sorting algorithms, data structures (from simple data collections to B-trees and hashing), and basic compiler technology. That is, four books into one (and, surprisingly, this is not a hefty tome.)