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

Бинарное дерево - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
orienteer
7 / 6 / 0
Регистрация: 23.06.2009
Сообщений: 41
30.04.2010, 00:46     Бинарное дерево #1
Нужно записать в дерево и вывести в форматированном виде каталог файлов(типа windows)
на вход даны имена файлов вида
c:\win\1
c:\win\2
c:\sys
\ не является частью имени, а служит для разделения узлов при задании пути
Внутри одного узла не допускаются листья с одинаковыми именами
Длины имен узлов и листьев, как и их количество – не ограничены, нужно использовать динамическую память.
вывод вида
c:
win
1
2
sys

проблема в том что нельзя использовать STL
как реализовать запись в дерево, подскажите плз
чтение имени реализовал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char *ReadName(FILE *pFile)
{
    char *pString = NULL;
    int ch;
    int length = 0;
    while (((ch = fgetc(pFile)) != EOF) && (ch != '\n') && (ch != '\\'))
    {
        pString = reinterpret_cast<char*>(realloc(pString, length + 1)); 
        pString[length++] = static_cast<char>(ch); 
    }
    if ((length != 0) || (ch != EOF))
    {
        pString = reinterpret_cast<char*>(realloc(pString, length + 1));
        pString[length] = '\0';
    }
    return pString;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2010, 00:46     Бинарное дерево
Посмотрите здесь:

C++ Бинарное дерево
Бинарное дерево C++
бинарное дерево C++
Бинарное дерево C++
Бинарное дерево C++
C++ Дерево бинарное
Бинарное дерево. С++ C++
Бинарное дерево C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
02.05.2010, 02:37     Бинарное дерево #2
для каждого узла: левое поддерево это вложенные в него папки или файлы, прваое поддерево это файл или папка находящиеся на одном уровне с данным узлом. только чтобы описать большое количество файлов в папке потребуется еще один тип узл-соединитель.
для:
c:\temp\lab1\prg1.c
c:\temp\lab1\prg2.c
c:\temp\lab2\prg1.c
c:\temp\task
c:\work\foto.jpg
c:\lib\dev-c++
дерево будет:
Код
                             c:
                          /     \
                       work      0
                       /   \
              foto.jpg      *
                              \
                               temp
                              /     \
                         lab1        *
                      /      \         \
                  prg1.c      *         lib
                    \           \        /
                     *         lab2   dev-c++
                      \          /  \
                  prg2.c   prg1.c   *
                                       \
                                     task
где '*' - соединительный узел.

Добавлено через 23 часа 48 минут
Хотя нет, что то я намудрил. Не надо узла соединителя. просто правый сын на одном уровне с отцовким узлом и все.
Yandex
Объявления
02.05.2010, 02:37     Бинарное дерево
Ответ Создать тему
Опции темы

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