Связанные списки?...
Проясните один момент пожалуйста.
Хочется освоить работу со связанными списками. Но вот в чем заминка. Имеем например: Список second и Список first In first type включаем second type Вопрос в следующем, вне зависимости сколько раз я создам первый список и в нем второй, содержимое второго все равно будет в общей куче второго списка, а не принадлежать свеже созданному списку first? Блин... изложил как сумел. Поймите кто нибудь мои непонятные мысли. |
Ответ: Связанные списки?...
Например нужно получить следующее:
Создаем список Window с набором параметров, такие как координаты, размер, ну и др. мишура. Дальше для этого окна создаем вторым (связанным) списком набор гаджетов (кнопки, флажки, текст боксы и пр. мишура). Вот здесь и хотелось бы, чтобы гаджеты и прочая мишура второго списка принадлежали бы только своему окну, а не висели кучей в списке номер 2. Вообще не могу понять, в чем смысл например таких записей: one.list = new list one\параметр = что нибудь one.list = new list one\параметр = другое что нибудь two.list = new list two\параметр = что нибудь если например for one.list = each list print one\параметр next в итоге выдаст полностью все содержимое списка и с указателем one и указателем two. для чего тогда нужны указатели? Конечно я мог бы например во втором списке завести переменную куда бы записывал handl первого списка, (ну типа только моё), но тогда у меня в голове теряется смысл связанных списков. Можно вести таким же образом два независимых списка. В общем идея связанных списков на мой взгляд ГЕНИАЛЬНАЯ, но пока в меру своей ограниченной не просвятленности, реализация таковых мне кажется туповатой. structure в Си как то почетче... :( |
Ответ: Связанные списки?...
two и one это указатели на элемент списка.
for one.list = each list тут каждый шаг цикла one присваивается какой то элемент списка, по порядку. one это только название, вместо него можно было бы прописать что угодно. Если хочеш два разных списка, то либо создаешь 2 списка type window field lol endtype type gadjeti field lol endtype и работаеш с тем который тебе нужен сейчас. либо делаеш один, но type window field ListType field lol endtype Если у тя гаджет, то присваиваеш ListType=1, если виндоус, то присваиваш ListType=0. for one.window = each window if ListType=0 print window\lol endif next |
Ответ: Связанные списки?...
Вложений: 1
Можно сделать свои собственные связные списки.
Я сделал двусвязный список с добавлением данных в конец, можно пробегать с начала до конца и с конца до начала. Вставку в начало и удаление элемента добавить легко и просто. Вместо знакомого For ... Each ... Next здесь получаем link = first link while link <> null .... link = next link wend Вот мой примерчик кода: UPD: т.к. в качестве данных хранится Handle, то хранить можно любые данные Type. Не знаю насколько быстро работает d = Object.TData(link\objPtr), наверное быстро.:) |
Ответ: Связанные списки?...
Самая отличная статья увиденная мной про списки. Что б понять как организовано именно связь между списками мне пришлось прочитать статью раза три в свое время. Но если понять, таких проблем как у тебя появляться больше не должно:
Журнал Blitz Et Cetera - Связанные списки в Blitz3D п.с. И вообще.... Советую почитать в этом журнале больше чем эту статейку... |
Часовой пояс GMT +4, время: 15:36. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot