Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Помогите создать иерархию, динамической вложенности   Найти похожие ветки 

 
msgipss   (2005-03-02 20:17) [0]

Как создать следующую структуру:
type
rSProp = record
sName:string;
nType:byte;
end;
rMProp = record
aSProp:  array of rSProp;
sName: String;
  aMProp: array of rMProp;
end;
var aMProp: array of rMProp;
Понятно что это работать не будет, но смысл понятен должен быть.
Хочу сделать иерархию любой вложенности, как ни будь можно сделать это не статически ?
Надеюсь, я хоть немного понятно объяснил, заранее благодарен за ответ


 
Димон   (2005-03-02 20:21) [1]

Используй классы...
Или ссылки на записи...

т.е.
PRec = ^TRec;
TRec = record
  Children: array of PRec;
end;


 
Ермак ©   (2005-03-02 21:33) [2]

В общем-то, она у тебя и так не статическая, так как array of есть указатель на массив динамической длины. Но, естественно, косой это способ. Если дерево органиченной арности (т.е. у каждого узла может быть не более n веток) то при небольшом n сойдет и статический массив указателей на запись). Иначе - динамический массив, но не записей, а указателей на запись.

А лучше всего - гибрид дерева и списка.

TNode = record
data: ...
subnodes: pNode; //список веток нижнего уровня
next: pNode; //Указатель на следующую вершину того же уровня.
end;

[A]
|(subnodes)
[B1]-(next)-[B2]-(next)-[B3]-...
|             |           |

Если важна скорость поиска, то вместо списка вообще используй бинарное дерево.


 
msgipss   (2005-03-03 16:04) [3]

Димон   (02.03.05 20:21) [1]
а как использовать объекты,
как указать в классе 1, класс 2 описанный ниже ?


 
Просто Джо ©   (2005-03-03 16:15) [4]


> как указать в классе 1, класс 2 описанный ниже ?



type
 TClass1 = class;

 TClass2 = class
 private
   FInnerClass: TClass1;
 end;

 TClass1 = class
 // полное объявление класса
 end;


 
msgipss   (2005-03-03 18:38) [5]

Большой сенькс 8)



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
1-1110042412
Yegorchic
2005-03-05 20:06
2005.03.20
Как удалить элемент массива?


9-1103886504
normalING
2004-12-24 14:08
2005.03.20
Физика


1-1110092602
Leeechhhh
2005-03-06 10:03
2005.03.20
почему ошибка


14-1109577221
boriskb
2005-02-28 10:53
2005.03.20
Для тех, кому приходится набирать сотрудников в soft компанию.


14-1109313006
вредитель
2005-02-25 09:30
2005.03.20
МРОС (читать заадомм наа пеередд) не дремлет