списки и деревья
Участников: 3
FreeBasic :: Программирование :: Общее
Страница 1 из 1
списки и деревья
В си есть такая класная штука, как списки и деревья.
Очень хочется реализовать нечто похожее на fb, выскажетесь пожалуйста по этому поводу.
Может быть нечто похожее уже есть?
От массива переменной длины redim отказываюсь, из-за потерь времени при его переформировании.
А ведь эта операция будет происходить постоянно.
У меня было несколько мыслей, но все они споткнулись о строки.
Вот например создаю я тип
Это уже продуманная и отработанная стратегия.
Упс! Нашел ошибку! Стоило написать пост, а оно заработало.
И вот ещё, поля child, last, prev, next и base заданы как uinteger, но насамом деле там должны быть объекты
Очень хочется реализовать нечто похожее на fb, выскажетесь пожалуйста по этому поводу.
Может быть нечто похожее уже есть?
От массива переменной длины redim отказываюсь, из-за потерь времени при его переформировании.
А ведь эта операция будет происходить постоянно.
У меня было несколько мыслей, но все они споткнулись о строки.
Вот например создаю я тип
- Код:
type tElement
value as string ' значение
key as string ' ключ
prev as uinteger ' предыдущий элемент
next as uinteger ' следующий элемент
child as uinteger ' первый дочерний
base as uinteger ' родительский
last as uinteger ' последний дочерний
end type
Это уже продуманная и отработанная стратегия.
Упс! Нашел ошибку! Стоило написать пост, а оно заработало.
И вот ещё, поля child, last, prev, next и base заданы как uinteger, но насамом деле там должны быть объекты
- Код:
dim a as tElement pointer
Re: списки и деревья
с деревьями незнаю, не колупался, а со списками делается так
- Код:
type tElement
value as string ' значение
key as string ' ключ
next as tElement ptr' fb позволяет так делать
end type
dim as tElement ptr ppMain
ppMain=allocate(sizeof(tElement)) 'типа родительский элемент
'добавляем к нему следующий
ppMain->next=allocate(sizeof(tElement))
'и тд
Различные контейнеры
Для создания контейнеров (списков, деревьев и т.д.) можно воспользоваться библиотекой расширений (FreeBASIC Extended Library): http://code.google.com/p/fb-extended-lib/
На сколько я знаю встроенных контейнеров в FB нет.
На сколько я знаю встроенных контейнеров в FB нет.
Re: списки и деревья
ShenZN, спасибо! Посмотрим. Там правда кажется упор делается на что-то другое. Больше расписывается о загрузке изображений, да о сортировках.
Я пока до такого уровня не взлетел. Мнебы чего попроще.
Tux, спасибо. Со списками я разобрался и сам. А вот тип данных - не знал, что так можно.
Я просто стал ставить as any pointer.
У меня кажется и с деревьями пошло. Рекурсивный вызов функций подходящее решение.
Так, что я пока пишу собственную либу для работы со структурированными данными. Использование ооп, оказалось как нельзя к стати.
Помогите, мне пожалуйста немного с теорией разобраться.
Русской литературы (не груженой), было бы неплохо.
Но вообще, думаю и так прорвусь.
За основу я взял объектную модель xml документа.
документ < {список узлов, ...} < узел < список атрибутов < атрибут
Ну и вот, думаю, как мне запрашивать данные из конкретного узла из любого места?
Хочеться, с одной стороны, поближе к fb, а с другой стороны, большую гибкость.
Решил использовать путь, как в файловой системе.
"\dir1\...\node@atribs"
Кое где с подстановочными знаками. Как по вашему это будет удобно?
Естественно это для запроса конкретных данных из любого места.
Или для выборки нужных узлов, т.е. создания списка.
И вот ещё. Я кажется не очень хорошо представляю себе подобные технологии.
делаю я выборку, как в bd "select".
Мне должен будет вернуться список узлов.
Но вот вопрос какой. Этот список должен быть жестко привязан к документу или он должен быть автономным?
Наверное автономный, причём плоский. т.е. все вложенные узлы должны быть развёрнуты если соответствуют запросу.
Хорошо, вот он автономный, но как же его тогда обратно вставлять в дерево?
p.s.
Простите за словестный панос, Это я так думаю. Последнее средство. С надеждой, что кто-нибудь найдёт ошибку в рассуждениях и ткнёт меня в неё носом.
Я пока до такого уровня не взлетел. Мнебы чего попроще.
Tux, спасибо. Со списками я разобрался и сам. А вот тип данных - не знал, что так можно.
Я просто стал ставить as any pointer.
У меня кажется и с деревьями пошло. Рекурсивный вызов функций подходящее решение.
Так, что я пока пишу собственную либу для работы со структурированными данными. Использование ооп, оказалось как нельзя к стати.
Помогите, мне пожалуйста немного с теорией разобраться.
Русской литературы (не груженой), было бы неплохо.
Но вообще, думаю и так прорвусь.
За основу я взял объектную модель xml документа.
документ < {список узлов, ...} < узел < список атрибутов < атрибут
Ну и вот, думаю, как мне запрашивать данные из конкретного узла из любого места?
Хочеться, с одной стороны, поближе к fb, а с другой стороны, большую гибкость.
Решил использовать путь, как в файловой системе.
"\dir1\...\node@atribs"
Кое где с подстановочными знаками. Как по вашему это будет удобно?
Естественно это для запроса конкретных данных из любого места.
Или для выборки нужных узлов, т.е. создания списка.
И вот ещё. Я кажется не очень хорошо представляю себе подобные технологии.
делаю я выборку, как в bd "select".
Мне должен будет вернуться список узлов.
Но вот вопрос какой. Этот список должен быть жестко привязан к документу или он должен быть автономным?
Наверное автономный, причём плоский. т.е. все вложенные узлы должны быть развёрнуты если соответствуют запросу.
Хорошо, вот он автономный, но как же его тогда обратно вставлять в дерево?
p.s.
Простите за словестный панос, Это я так думаю. Последнее средство. С надеждой, что кто-нибудь найдёт ошибку в рассуждениях и ткнёт меня в неё носом.
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|