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

Построение сильноветвящегося дерева на основе таблицы отношений - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа которая не является консольной http://www.cyberforum.ru/cpp-beginners/thread334669.html
Используя динамический объект-список C++, написать программу вывода графических объектов на экран с последующим перемещением, используя динамическое выделение памяти. Нужно это реализовать в Visual Studio. И конечно же приложение должно быть не консольным. А я ток с консольными работал. Подскажите пожалуйста что и как и лучше для этого использовать? Какой материал здесь нужен?
C++ Не могу переделать код Мне дана матрица коэффициентов системы линейных уравнений в необычном виде: Исходная СЛУ 4x1 + 2x2 + 9x3 = 1 x2 + 6x3 = 7 4x1 + 2x3 = 0 коэффициенты исходной СЛУ (1;4)(2;2)(3;9) (2;1)(3;6) (1;4)(3;2) Каждая строка файла содержит информацию о ненулевых коэффициентах одного уравнения СЛУ. http://www.cyberforum.ru/cpp-beginners/thread334668.html
Напечатать "столбиком" все вхождения в предложение некоторого символа C++
Дано предложение.Составить программу,которая печатает "столбиком" все вхождения в предложение некоторого символа.
C++ Конструктор, немного не понятно
Всем привет. В одной книге наткнулся на пример с конструктором: #include "stdafx.h" #include <iostream> using namespace std; class balance { double cur_bal; char name; public:
C++ LoadLibrary http://www.cyberforum.ru/cpp-beginners/thread334650.html
Здравствуйте Нужно подгрузить мою .dll в память. #include <windows.h> HMODULE myDLL = LoadLibraryA("my.dll"); не компилится (error LNK1120: 1 неразрешенных внешних элементов) подскажите как исправить. новичек :scratch:
C++ Наследование Добрый день. Мне нужно реализовать такую структуру классов: есть класс 1, от него наследуются три класса: 2.1, 2.2, 2.3. От этих трех классов нужно множественно унаследовать класс 3. Не возникнет ли каких-нибудь проблем, например, с тем, что все классы 2 будут иметь какое-то одинаковое поле класса 1 и при слиянии их в класс 3 возникнет какой-нибудь конфликт, или в 3 будет три одинаковых метода и... подробнее

Показать сообщение отдельно
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
20.07.2011, 18:26     Построение сильноветвящегося дерева на основе таблицы отношений
Необходима небольшая коррекция таблицы, надо добавить в нее [0 родитель 1] и [0 родитель 2].


Отсортировать таблицу отношений по возрастанию атрибута parent.
Пусть каждый узел дерева будет иметь свой уникальный номер как во волжении, буду называть его индексом.
Для первого значения атрибута pfrent выполняем:
-- Создаем корень с индексом, равным этому значению.
Для каждого значения атрибута parent (в том числе и для первого) выполняем:
-- Поиск узла с индексом, равным значению атрибута.
-- Cоздать его потомка с индексом = значению атрибута child, и добавить в список потомков узла.

Можно чуть-чуть по-другому.
Создать массив ссылок на узлы размером n-количество узлов (количество строк в таблице отношений).
Индекс элемента массива представляет собой индекс узла.
Пройти по массиву и создать все узлы.
Для каждой строки из таблицы выполнить:
C++
1
2
3
4
   ArrayOfNodePointers[Table[i].parent]->addChild( ArrayOfNodePointers[Table[i].child] );
   Node *root = ArrayOfNodePointers[0];
   Table.free();
   ArrayOfNodePointers.free(); // высвободить память под массивом, не освобождая узлы!
Дерево готово, указатель на его корень в переменной root.
Надеюсь понятно, но все равно прокомментирую:
Node - узел.
Node::addChild - добавить ребенка в список детей узла.
ArrayOfNodePointers - массив указателей на узлы.
Table - таблица отношений.
Table::operator[i] - оператор произвольного доступа с элементу таблицы.
 
Текущее время: 23:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru