![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Древовидные структуры [D6, WinXP]
aleks-ran © (2005-02-01 09:58:00)Мастера, подскажите, есть ли уже готовый тип, для хранения древовидных структур, или как лучще его описать
aleks-ran (2005-02-01 13:03:00) [1]спасибо, буду рыть :)
Digitman (2005-02-01 12:59:00) [2]http://www.google.ru/
модели поиска - "Сетевая модель", "Сетевые структуры хранения данных", "Графы", "Предствление сетевой модели в виде графа", "Сетевая модель и графы", "Графы и матрицы" .. и т.д. и т.п.
aleks-ran (2005-02-01 12:51:00) [3]тогда будьте добры [13], если не тяжело :)
Digitman (2005-02-01 12:40:00) [4]
> aleks-ran © (01.02.05 12:35) [18]
это и есть сеть.
aleks-ran (2005-02-01 12:35:00) [5]точка лежит или на ребре полигона (вершина - частный случай) либо на делящем его отрезке, либо на отрезках.
Представь себе пирог поделенный произвольным образом.
Условие лишь одно: если начали резать этот пирог то режем до пересечения либо с ребром полигона, либо до пересечения с другим отрезком.
Digitman (2005-02-01 12:24:00) [6]
> aleks-ran © (01.02.05 12:14) [16]
> Фигура - это набор координат вершин
фигня какая-то ..
у тебя полигон что ли фигурирует некий ? и известны координаты его вершин ?
так и скажи ..
> Перемычка - это прямая соединяющая любые две точки на фигуре
опять же - фигня какая-то ..
что есть "две точки на фигуре" ?
есть полигон, он образован ребрами, соединяющими его вершины
ЧТО считать "перемычкой" ? то ли отрезок, соединяющий две произвольные вершины полигона, то ли отрезок, соединяющий две произвольные точки (не обязательно совпадающим с вершинами), принадлежащие двум разным ребрам полигона ..
aleks-ran (2005-02-01 12:14:00) [7]Фигура - это набор координат вершин соединенных между собой последовательнои образующих в итоге ломаную замкнутуюлинию.
Перемычка - это прямая соединяющая любые две точки на фигуре, либо фигура-перемычка, либо перемычка-перемычка
И мне надо эту хрень где-то хранить, дабы на канве, проходя, скажем по ветвям дерева, нарисовать все это.
Digitman (2005-02-01 11:57:00) [8]
> А что такое сетевая модель
> 1) есть основная фигура
что такое "фигура" ? что такое "плоская конструкция" ?
ты оперируешь языком отнюдь не программиста ..
> 2) проводим первые N непересекающся перемычек
опять же - что такое "перемычка" ?
на языке строителей, к примеру, "перемычка" - это такая бетонная армированная хреновина..
aleks-ran (2005-02-01 11:16:00) [9]А выбрал древовидную модель из таких соображений:
1) есть основная фигура;
2) проводим первые N непересекающся перемычек которые делят 1) на "равноправные" N+1 поля - первые ветви деревьев;
3) в этих полях далее проводим перемычки - 2-е ветви дерева
и т.д.
aleks-ran (2005-02-01 11:10:00) [10]
> Digitman ©
А что такое сетевая модель и где про нее прочитать, не подскажите?
Sergey_Masloff (2005-02-01 10:40:00) [11]Alx2 © (01.02.05 10:32) [11]
>Насчет обход не сделаешь - это зря :)
Да, погорячился ;-)
Alx2 (2005-02-01 10:32:00) [12]Sergey_Masloff (01.02.05 10:08) [7]
Насчет обход не сделаешь - это зря :)
С остальным согласен.
Digitman (2005-02-01 10:31:00) [13]
> Sergey_Masloff (01.02.05 10:10) [8]
> Digitman © (01.02.05 10:02) [3]
> >класс TTreeView
> Тоже плохо
ну автор же не уточнял изначально, зачем ему это нужно
просто - "готовый тип" ... чем TTreeView не "готовый тип" ?)
а вот после [9] стало понятно, что он вообще не в тот огород, по всей видимости, полез .. ему нужны структуры, поддерживающие не древовидную модель, а сетевую ..
aleks-ran (2005-02-01 10:25:00) [14]уточняю, мне надо делить перемычками плоскую конструкцию, причем перемычки могут быть как от края до края конструкции, так и от одной до другой перемычки.
Ничего лучше дерева для этого я не могу придумать.
Sergey_Masloff (2005-02-01 10:10:00) [15]Digitman © (01.02.05 10:02) [3]
>класс TTreeView
Тоже плохо. Это ж TWinControl там от контрола в 10 раз больше чем от дерева.
Sergey_Masloff (2005-02-01 10:08:00) [16]Alx2 © (01.02.05 10:02) [4]
>Стандарт:
Про стандарт - бабушке расскажи ;-) Шутка.
Это только двоичное дерево - ими не все ограничивается. Да и родителя нет у твоего описания. Не дерево это ибо обход не сделаешь.
Sergey_Masloff (2005-02-01 10:05:00) [17]Существует масса совершенно разных древовидных структур. Двоичные деревья, 2-3 деревья, красно-черные деревья и масса других. В основном используются 2 типа представлений - посредством массивов и посредством связаных списков. Тот и другой способ имеют свои преимущества и недостатки.
Навскидку
PNode = ^TNode;
TNode = record
data : Pointer; // Данные
parent : Pnode; // Родитель
firstchild : PNode; // Первый из сыновей
nextsibling : PNode; // Следующий брат
end;
Tree = PNode;
Александр Иванов (2005-02-01 10:05:00) [18]Alx2 © (01.02.05 10:02) [4]
Это не совсем стандарт, это бинарное дерево.
Alx2 (2005-02-01 10:02:00) [19]aleks-ran © (01.02.05 9:58)
Стандарт:
Tree = class
Left,Right : Tree;
end;
+ поля с методами
Digitman (2005-02-01 10:02:00) [20]
> aleks-ran © (01.02.05 09:58)
класс TTreeView