Трюк не интересный, а вот структура интересная. Имея указатель на node я не могу его извлечь, нужно два указателя? Структура используется в случаях когда указателей на элементы гораздо меньше чем самих элементов в листе, так?
Здравствуйте, Videoman, Вы писали:
V>Имея указатель на node я не могу его извлечь, нужно два указателя?
Не так. Не можешь перейти к следующему, не имея указателя на предыдущий.
V>Структура используется в случаях когда указателей на элементы гораздо меньше чем самих элементов в листе, так?
По-моему, простая экономия памяти.
Здравствуйте, Mihas, Вы писали:
M>Не так. Не можешь перейти к следующему, не имея указателя на предыдущий.
Какой из них следующий, а какой предыдущий, определяется программистом. Их можно поменять местами и тогда, обход пойдет в противоположном направлении. Указателей два. Понятно, что таким образом можно пройти список от начала до конца. Меня больше интересует, как с ним работать удаляя или добавляя элементы в произвольных позициях.
M>По-моему, простая экономия памяти.
Это как посмотреть. Если ссылок на узлы больше чем самих узлов, и каждая ссылка это два указателя (если нужны операции удаления и добавления), то выгоднее может оказаться "классический" список.
Здравствуйте, Videoman, Вы писали:
V>Здравствуйте, Mihas, Вы писали:
M>>Не так. Не можешь перейти к следующему, не имея указателя на предыдущий. V>Какой из них следующий, а какой предыдущий, определяется программистом. Их можно поменять местами и тогда, обход пойдет в противоположном направлении. Указателей два.
Имея только указатель на узел, невозможно найти соседей. Нужно помнить, откуда пришел, чтобы пойти дальше. Я это хотел сказать. Но, видимо, мы об одном и том же.
Здравствуйте, Mihas, Вы писали:
V>>Структура используется в случаях когда указателей на элементы гораздо меньше чем самих элементов в листе, так? M>По-моему, простая экономия памяти.
Нет, но эта структура данных позволяет добавлять/удалять элементы по краям списка, пользуясь атомарными операциями с памятью (lock-free).
Здравствуйте, Pzz, Вы писали:
Pzz>Нет, но эта структура данных позволяет добавлять/удалять элементы по краям списка, пользуясь атомарными операциями с памятью (lock-free).
Разве? На край же нужен отдельный указатель, его тоже нужно менять.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.