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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
orienteer
7 / 6 / 0
Регистрация: 23.06.2009
Сообщений: 41
#1

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

30.04.2010, 00:46. Просмотров 1702. Ответов 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++
Разработать и реализовать на языке С следующие функции работой с бинарным деревом: 1. Создание пустого дерева 2. Добавление элемента в...

Бинарное дерево - C++
Столкнулся с уникальной проблемой от которой волосы дыбом встают. Вот код, достаточно первой итерации цикла, я ввожу данные а потом...

Бинарное дерево - C++
Здравствуйте.Прошу помощи.Никак не могу разобраться в задании.Нужно сделать бинарное дерево и с помощью дерева привести выражение к...

Бинарное дерево - C++
Мой код: Patient.h // // Created by User on 26.04.2016. // #ifndef LABA_10_PATIENT_H #define LABA_10_PATIENT_H using...

Бинарное дерево - C++
Здравствуйте, Корень создаёться вот так TREE *root=NULL; непонятно почему функия добовления использует указатель на указатель ...

Бинарное дерево - C++
Здравствуйте.Прошу помощи.Никак не могу разобраться в задании.Нужно сделать бинарное дерево и с помощью дерева привести выражение к...

Бинарное дерево (отладка) - C++
Прога работает и всё запускает (здесь фрагмент), но, к сожалению, выводит некие символы и т.д. Где что надо поправить? struct...

Класс бинарное дерево - C++
Здравствуйте. Требуется написать англо-русский словарь на основе бинарного дерева. Не полностью понимаю, как будет выглядеть класс....

ребят!)бинарное дерево - C++
может кто знает как в С++ в программу впихнуть переводчик...??с русского на английский??может кто делал уже помогите..приведите пример хотя...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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 минут
Хотя нет, что то я намудрил. Не надо узла соединителя. просто правый сын на одном уровне с отцовким узлом и все.
Ответ Создать тему
Опции темы

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