Решение задачи сериализации дерева на C++

Опубликовано Jun 20, 2012 в Загрузка кода проектов, Наши старые тестовые задания, Тестовые проекты (2-3 часа) | Нет комментариев

,

Решение задачи сериализации дерева на C++

В посте Сериализация дерева сформулировано условие задачи о сериализации/десериализации дерева. В этом посте мы будем выкладывать удачные варианты ее решения в виде полных проектов для MS VS 2010. Подходы, использованные в каждом решении будет кратко описаны в посте. Кроме того, в коде имеются комментарии, иногда даже слишком подробные.

Вариант решения №1

Ссылку для загрузки полного исходника можно взять здесь.

Особенности. Приведено полное решение задачи с использованием фабрики классов для создания узлов. Показано, как фабрику классов подключать/отключать. Дерево сериализуется в строку собственного формата, потом ее можно записывать в текстовый файл. Код подробно прокомментирован. Алгоритм сериализации основан на рекурсии, алгоритм десериализации – итерационный. Имеются тестовые данные.

Структура данных для связей узлов дерева создается с помощью массива ссылок на дочерние узлы, следовательно класс BaseHolder имеет для связей между узлами единственное поле:

       private: std::list ChildrenLinks;

Автор публикации:

Оставить комментарий

Ваш адрес email не будет опубликован.


*