Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2012, 17:42   #1
Pasha88
 
Регистрация: 20.08.2012
Сообщений: 4
По умолчанию Создание объекта-дерева

Подскажите, пожалуйста, как преобразовать список из файлов и папок (гарантируется, что они описывают дерево с одним корнем - корневой директорией) в объект-дерево?
В первой строке n -общее количество файлов и директорий. В каждой из следующих строк - полный путь к файлу или директории, пробел и идентификатор файла или директории. Идентификаторы упорядочены по возрастанию.

пример списка:
tree[0]= "13";
tree[1]= ". 0";
tree[2]= "./download_client.sh 1";
tree[3]= "./random100_queries_sport.txt 2";
tree[4]= "./times.txt 3";
tree[5]= "./site 4";
tree[6]= "./site/site_kz_domains_random1000_2011-07-26.txt 5";
tree[7]= "./site/site_ru_domains_top1000_2011-07-26.txt 6";
tree[8]= "./site/site_by_domains_top1000_2011-07-27.txt 7";
tree[9]= "./site/kz 8";
tree[10]="./site/kz/random1000 9";
tree[11]="./site/kz/random1000/site_kz_random100_2011-07-16.xml 10";
tree[12]="./site/ru 11";
tree[13]="./site/ru/random100 12";
Pasha88 вне форума Ответить с цитированием
Старый 22.08.2012, 07:33   #2
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию

ну можно прям в лоб. наверное долго, если много вложений, но зато просто реализовать. "./" это как я понял корень. берем все строки от 2 до 13 в цикле. парсим каждую строку так:
изначально tree[11]="./site/kz/random1000/site_kz_random100_2011-07-16.xml 10";
отсекаем "./", остается "site/kz/random1000/site_kz_random100_2011-07-16.xml 10"
отсекаем до первого слеша на две части, получим:
"site" и "kz/random1000/site_kz_random100_2011-07-16.xml 10"
создаем в корне потомка с именем "site", если его еще нет, и перемещаемся туда. парсим дальше:
"kz" и "random1000/site_kz_random100_2011-07-16.xml 10"
создаем в потомке "site" потомка "kz", если его там еще нет, перемещаемся туда.
и так до тех пор, пока в строке не останется "site_kz_random100_2011-07-16.xml 10"
отсекаем нафиг "10" и создаем лист с именем
"site_kz_random100_2011-07-16.xml"
вроде все.
Kukurudza вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание и заполнение B+ дерева (Paskal) Bloodwhip Помощь студентам 2 30.07.2012 17:12
[C++] Создание дерева, хранящегося в xml файле branbranzor Помощь студентам 0 19.05.2012 08:57
[Java] Создание объекта внутри объекта этогоже класса. Svarogich Помощь студентам 2 01.08.2011 16:03
Создание и обход дерева jonni2008 Общие вопросы .NET 1 12.11.2010 06:05
создание бинарного дерева zetrix Паскаль, Turbo Pascal, PascalABC.NET 2 30.11.2006 19:32