Имхо, если хочется на профессиональном уровне, то сперва очень много теории и разбор теоретических задач на практике. А дальше теории все меньше, а практики все больше . Если в цифрах, то сперва 80/20, а потом 20/80 -- в обоих случаях слева теория, справа практика.
Если хочется практический пример, то берем классику — некогда трехтомник, а на данный момент четырехтомник Кнута. Там изложены основы по структурам данных, алгоритмам поиска и сортировки, дана теоретическая база оценки сложности алгоритмов (наше любимое O(n)). Берешь и прям с первой книги читаешь, а все программы на псевдокоде, коих там куча, пишешь ручками и смотришь в дебаге, как они работают.
Когда работа будет проделана, берешь, к примеру, C# и видишь там прям из коробки List, HashTable, Sort и прочая и прочая, и уже понимаешь, как оно работает, почему и чего от всего этого ждать. Тут начинается практика — зная природу инструмента уже можешь его правильно применять.
ЗЫ: C# указан для примера. На самом деле основные сложные типы данных, алгоритмы поиска и сортировки уже написаны и есть в свободном доступе, пожалуй, для всех популярных языков. Трудно найти что-нибудь экзотическое, типа "пирамидальная сортировка на прологе", но и то, если пошариться, наверняка найдется =)