Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
oodessit
0 / 0 / 0
Регистрация: 21.08.2013
Сообщений: 36
26.09.2013, 05:15     Рекурсивный обход НЕбинарного дерева #1
Имеется функция, которая рекурсивно обходит одну папку.

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. Дерево НЕбинарное (о них инфы в инете полно). Прошу помочь с алгоритмом
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2013, 05:15     Рекурсивный обход НЕбинарного дерева
Посмотрите здесь:

C++ Нерекурсивный обход дерева
Рекурсивный обход каталога C++
Обход дерева) C++
C++ Рекурсивный обход директорий
C++ Рекурсивный обход двумерного массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AntonChik
1083 / 581 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
26.09.2013, 07:48     Рекурсивный обход НЕбинарного дерева #2
непонятно. если имеется функция (не проверял, но вроде рабочая), которая рекурсивно обходит одну папку, то что мешает запустить ее из корневого каталога?
под деревом же подразумевается дерево каталогов? и понятно что оно в общем виде небинарное.
что не так-то?
oodessit
0 / 0 / 0
Регистрация: 21.08.2013
Сообщений: 36
26.09.2013, 09:36  [ТС]     Рекурсивный обход НЕбинарного дерева #3
непонятно, как заставить ее (функцию) прошерстить остальные папки. Она ведь дойдет до последнего файла в корневой папке и остановится.
AntonChik
1083 / 581 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
26.09.2013, 10:02     Рекурсивный обход НЕбинарного дерева #4
судя по коду(строка 24) она должна рекурсивно лезть во все папки
Yandex
Объявления
26.09.2013, 10:02     Рекурсивный обход НЕбинарного дерева
Ответ Создать тему
Опции темы

Текущее время: 00:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru