Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 21.08.2013
Сообщений: 36
1

Рекурсивный обход НЕбинарного дерева

26.09.2013, 05:15. Показов 1009. Ответов 3
Метки нет (Все метки)

Имеется функция, которая рекурсивно обходит одну папку.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
void GetFileList(LPTSTR sPath, Object* fsParser) {
 
    WIN32_FIND_DATA pFILEDATA;
 
    HANDLE hFile = FindFirstFile(wcscat(sPath,L"\\*.*"),&pFILEDATA);
 
    sPath[wcslen(sPath) - wcslen(wcswcs(sPath,L"*.*"))] = '\0';
 
    if (hFile!=INVALID_HANDLE_VALUE)    {
        char * chBuf;
        do {
            if (wcslen(pFILEDATA.cFileName) == 1 &&  wcschr(pFILEDATA.cFileName,L'.') !=NULL)
                if (FindNextFile(hFile,&pFILEDATA) == 0)
                    break;
            if (wcslen(pFILEDATA.cFileName) == 2 && wcsstr(pFILEDATA.cFileName,L"..") !=NULL)
                if(FindNextFile(hFile,&pFILEDATA) == 0)
                    break;
            if(pFILEDATA.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
 
              
                Object* foundFolder = new Folder;
                fsParser.add(foundFolder);
 
                GetFileList(wcscat(sPath,pFILEDATA.cFileName), foundFolder);
                sPath[wcslen(sPath) - wcslen(pFILEDATA.cFileName)- 1] = '\0';
            }
            else {
           
                Object* foundFile = new Folder;
                fsParser.add(foundFile);
            }
        }
        while (FindNextFile(hFile,&pFILEDATA));
    }
}

Не могу догнать, как заставить его обходить все дерево, параллельно вытягивая атрибуты из файлов. Думаю воспользоваться GetFileAttributes. Дерево НЕбинарное (о них инфы в инете полно). Прошу помочь с алгоритмом
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2013, 05:15
Ответы с готовыми решениями:

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

Рекурсивный обход дерева, не являющегося бинарным
Пожскажите, пожалуйста, как организоват рекурсивный обход небинарного дерева...

Рекурсивный обход дерева папок и файлов - избавиться от бесконечного цикла
Добрый день! Стоит задача рекурсивно обойти и сохранить имена папок и файлов в виде вектора. Моя...

Рекурсивный обход каталога
Здравствуйте. Стоит следующая задача. Необходимо выполнить рекурсивный обход директорий находящихся...

3
1089 / 587 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
26.09.2013, 07:48 2
непонятно. если имеется функция (не проверял, но вроде рабочая), которая рекурсивно обходит одну папку, то что мешает запустить ее из корневого каталога?
под деревом же подразумевается дерево каталогов? и понятно что оно в общем виде небинарное.
что не так-то?
0
0 / 0 / 0
Регистрация: 21.08.2013
Сообщений: 36
26.09.2013, 09:36  [ТС] 3
непонятно, как заставить ее (функцию) прошерстить остальные папки. Она ведь дойдет до последнего файла в корневой папке и остановится.
0
1089 / 587 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
26.09.2013, 10:02 4
судя по коду(строка 24) она должна рекурсивно лезть во все папки
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2013, 10:02

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Рекурсивный обход директорий
Уважаемые Гуру, требуется ваша помошь. Мне необходимо реализовать рекурсивный обход...

Рекурсивный обход двумерного массива
Здравствуйте! Не могу составить алгоритм рекурсивного обхода двумерного массива. Например есть...

Рекурсивный обход роботом плоской фигуры
Всем доброго времени суток. Помогите, пожалуйста, в решении задачи на рекурсию. Необходимо,...

обход дерева
Здравствуйте! У меня вопрос: Есть класс: class D { vector <A*> count; }; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.