Описываются методы построения и использования сложных структур данных: стеки, деревья, графы; нетрадиционные представления данных, в частности функциональное представление. Рассматриваются различные алгоритмы обработки этих структур на простых примерах программ. Изложение осуществляется на основе объектно-ориентированного подхода с использованием языка программирования C++. Показано, как тот или иной выбор решения задач влияет на эффективность и выразительность программ. Приводится большое количество текстов программ, иллюстрирующих рассматриваемые алгоритмы. Компакт-диск, прилагаемый к книге, содержит свободно распространяемый компилятор языка C++ (лицензия GNU) и примеры программ из книги с техническими подробностями, опущенными в тексте.