A good knowledge of data structures and algorithms is key to solving difficult problems as a programmer.