FreeBasic
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

списки и деревья

Участников: 3

Перейти вниз

списки и деревья Empty списки и деревья

Сообщение  Eric-S Сб Авг 16, 2008 4:05 am

В си есть такая класная штука, как списки и деревья.
Очень хочется реализовать нечто похожее на 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
Как правильно их указать?

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 40
Откуда : Россия, Санкт-Петербург

http://eric50.narod.ru

Вернуться к началу Перейти вниз

списки и деревья Empty Re: списки и деревья

Сообщение  tux Сб Авг 16, 2008 9:15 am

с деревьями незнаю, не колупался, а со списками делается так
Код:

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))
'и тд
tux
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 35
Откуда : Сибирь

http://tux.nsk.ru/

Вернуться к началу Перейти вниз

списки и деревья Empty Различные контейнеры

Сообщение  ShenZN Сб Авг 16, 2008 11:07 am

Для создания контейнеров (списков, деревьев и т.д.) можно воспользоваться библиотекой расширений (FreeBASIC Extended Library): http://code.google.com/p/fb-extended-lib/

На сколько я знаю встроенных контейнеров в FB нет.

ShenZN

Сообщения : 155
Дата регистрации : 2008-02-18
Откуда : Ukraine

http://lodestar-game.narod.ru

Вернуться к началу Перейти вниз

списки и деревья Empty Re: списки и деревья

Сообщение  Eric-S Пн Авг 18, 2008 9:28 pm

ShenZN, спасибо! Посмотрим. Там правда кажется упор делается на что-то другое. Больше расписывается о загрузке изображений, да о сортировках.
Я пока до такого уровня не взлетел. Мнебы чего попроще.

Tux, спасибо. Со списками я разобрался и сам. А вот тип данных - не знал, что так можно.
Я просто стал ставить as any pointer.

У меня кажется и с деревьями пошло. Рекурсивный вызов функций подходящее решение.

Так, что я пока пишу собственную либу для работы со структурированными данными. Использование ооп, оказалось как нельзя к стати.

Помогите, мне пожалуйста немного с теорией разобраться.
Русской литературы (не груженой), было бы неплохо.

Но вообще, думаю и так прорвусь.

За основу я взял объектную модель xml документа.

документ < {список узлов, ...} < узел < список атрибутов < атрибут

Ну и вот, думаю, как мне запрашивать данные из конкретного узла из любого места?

Хочеться, с одной стороны, поближе к fb, а с другой стороны, большую гибкость.

Решил использовать путь, как в файловой системе.

"\dir1\...\node@atribs"


Кое где с подстановочными знаками. Как по вашему это будет удобно?

Естественно это для запроса конкретных данных из любого места.
Или для выборки нужных узлов, т.е. создания списка.

И вот ещё. Я кажется не очень хорошо представляю себе подобные технологии.
делаю я выборку, как в bd "select".
Мне должен будет вернуться список узлов.
Но вот вопрос какой. Этот список должен быть жестко привязан к документу или он должен быть автономным?

Наверное автономный, причём плоский. т.е. все вложенные узлы должны быть развёрнуты если соответствуют запросу.

Хорошо, вот он автономный, но как же его тогда обратно вставлять в дерево?

p.s.
Простите за словестный панос, Это я так думаю. Последнее средство. С надеждой, что кто-нибудь найдёт ошибку в рассуждениях и ткнёт меня в неё носом.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 40
Откуда : Россия, Санкт-Петербург

http://eric50.narod.ru

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения