C структура данных на диск - PullRequest
1 голос
/ 15 сентября 2010

Как я могу сделать копию древовидной структуры данных в памяти на диск на языке программирования C?

Ответы [ 3 ]

3 голосов
/ 15 сентября 2010

Вам необходимо сериализовать его, то есть выяснить способ последовательного прохождения через него, который включает все узлы. Их часто называют методами обхода .

Затем найдите способ сохранить представление каждого узла вместе со ссылками на другие узлы, чтобы все они могли быть загружены снова.

Одним из способов представления ссылок является неявное, путем вложения, как это делает XML.

2 голосов
/ 15 сентября 2010

Основные части здесь:

  • Процедуры ввода-вывода для файла C: fopen , fwrite, fprintf и т. Д.
  • Копирование указателей на дискбесполезно, так как при следующем запуске все эти значения указателя будут дерьмом.Таким образом, вам понадобится некоторая альтернатива указателям, которые все равно каким-то образом связывают записи на диске друг с другом.Одной разумной альтернативой могут быть файловые индексы (тип, используемый вашими процедурами CI / O, такими как fseek и ftell ).

Это должно быть примерно для всехинформация, необходимая для выполнения работы.

В качестве альтернативы, если вы используете дерево на основе массива (с индексами массива вместо указателей или со ссылками, подразумеваемыми их положением в массиве), вы можете просто сохранить и загрузитьвесь шебанг без какой-либо дополнительной логики.

0 голосов
/ 15 сентября 2010

Придумайте функцию сериализации (и десериализации). Затем запустите его и отправьте вывод в файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...