В этой главе обсуждаются способы представления базовых структур данных, которые затем будут использоваться на протяжении всей книги - массивы, списки, деревья и др. Конечно, если вы уже программировали на C++, то на­верняка пользовались массивами; вероятнее всего, представление списков и деревьев тоже не будет для вас чем-то абсолютно незнакомым. Цель этой главы - не только напомнить известные структуры данных, но и продемон­стрировать авторский подход к организации структур данных.

Часто, уже после завершения этапа проектирования, возникает вопрос: как правильно выбрать структуры данных для своей программы? Иногда можно просто использовать объекты, предлагаемые выбранной системой программирования, но бывают ситуации, когда приходится создавать свои собствен­ные базовые структуры, более подходящие для целей разрабатываемого про­екта, чем стандартные универсальные структуры. Этому может быть множество причин. Наиболее частой из них является соображение эффективности рабочей программы. Действительно, стандартные структуры данных, спроектированные на все случаи жизни, могут требовать излишне много ресурсов, использовать общие, долго работающие алгоритмы и т. д. Еще одна часто встречающаяся причина - это желание включить в создаваемый класс специфические методы, приспособленные для решения конкретной задачи.

Не претендуя на универсальность, мы рассмотрим несколько базовых струк­тур и основные подходы к их реализации в программных проектах. Некото­рые из описанных структур будут использоваться в следующих главах прак­тически так, как они описаны в этой главе, однако в большинстве случаев придется вносить в эти структуры определенные изменения, обусловленные спецификой решаемой задачи или желанием автора показать новый подход к описанию и обработке данных.