Форум программистов, компьютерный форум, киберфорум
Наши страницы
Алгоритмы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Соколиный глаз
C#
234 / 175 / 115
Регистрация: 25.07.2014
Сообщений: 3,694
Завершенные тесты: 2
1

Кольцевые списки

19.02.2018, 13:20. Просмотров 1076. Ответов 10
Метки нет (Все метки)

Зачем нужны кольцевые односвязные и двусвязные списки? Когда они могут понадобиться? Ведь, если цель задачи - просто сделать циклический набор данных, можно то же самое решить массивом и операцией индекс mod количество_элементов_в_массиве.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2018, 13:20
Ответы с готовыми решениями:

Кольцевые списки
Здравствуйте, как реализовать удаление в кольцевом списке ? Читал, что можно сделать так, чтобы при...

Кольцевые списки
люди добрые, написал программу, теперь надо в ней сделать эти три списка в один кольцевой, но при...

Двунаправленные кольцевые списки
Здравствуйте, уважаемые форумчане! Нужна помощь в доработке Двунаправленного кольцевого списка ...

Однонаправленные кольцевые списки
Помогите пожалуйста с кольцевыми списками!!! Нужно написать процедуру которая создает...

Кольцевые однонапрвленые списки
Привет, нужно написать програму, которая в кольцевом однонаправленом списке заменит все числа...

10
Shamil1
Модератор
2257 / 1540 / 351
Регистрация: 26.03.2015
Сообщений: 5,494
19.02.2018, 14:13 2
Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Зачем нужны кольцевые односвязные и двусвязные списки?
Сначала ответьте на вопрос, зачем нужны односвязные и двусвязные списки.

Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
можно то же самое решить массивом
Односвязные и двусвязные списки нельзя заменить массивами и наоборот, так как операции с этими структурами занимают разное время.
0
Соколиный глаз
C#
234 / 175 / 115
Регистрация: 25.07.2014
Сообщений: 3,694
Завершенные тесты: 2
19.02.2018, 15:01  [ТС] 3
Ну, я как понимаю, вообще связные списки нужны (односвязные и двусвязные) для тех операций, где требуется максимально быстрая вставка и удаление.
0
krapotkin
3632 / 3195 / 1094
Регистрация: 14.04.2014
Сообщений: 15,364
Записей в блоге: 15
19.02.2018, 15:14 4
Цитата Сообщение от Shamil1 Посмотреть сообщение
нельзя заменить массивами и наоборот
имхо, сильно зависит от обстоятельств
кольцевой список строк например легко заменится массивом
1
Shamil1
Модератор
2257 / 1540 / 351
Регистрация: 26.03.2015
Сообщений: 5,494
19.02.2018, 17:31 5
Лучший ответ Сообщение было отмечено Volobuev Ilya как решение

Решение

Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Ну, я как понимаю, вообще связные списки нужны (односвязные и двусвязные) для тех операций, где требуется максимально быстрая вставка и удаление.
Правильно.

Есть некий набор операций, которые можно применять к контейнерам. У каждой операции есть амортизационная стоимость. Эта стоимость зависит от внутреннего устройства контейнера.

Например, Список (Вектор) может быть устроен по-разному. В его основе может быть массив, связный список, дерево и т.д. Мы выбираем реализацию в зависимости от того, какие операции (и как часто) нам нужно выполнять.
Например, если нам нужно вставлять элементы в середину списка, то лучше всего подойдёт связанный список (вставка O(1), обращение по индексу O(n)). Если нам нужно обращаться к элементам по индексу, то лучше всего подойдёт список на основе массива (вставка O(n), обращение по индексу O(1)). А если нам нужно и то, и другое, то лучше всего подойдёт список на основе дерева (вставка O(logn), обращение по индексу O(logn)).

Добавлено через 3 минуты
Цитата Сообщение от krapotkin Посмотреть сообщение
кольцевой список строк например легко заменится массивом
При этом стоимость вставки вырастет с O(1) до O(n).
1
krapotkin
3632 / 3195 / 1094
Регистрация: 14.04.2014
Сообщений: 15,364
Записей в блоге: 15
19.02.2018, 22:48 6
Цитата Сообщение от Shamil1 Посмотреть сообщение
вырастет с O(1) до O(n).
в общем виде - да. в конкретном кольце - ни на грамм
0
Shamil1
Модератор
2257 / 1540 / 351
Регистрация: 26.03.2015
Сообщений: 5,494
19.02.2018, 23:51 7
Цитата Сообщение от krapotkin Посмотреть сообщение
в общем виде - да. в конкретном кольце - ни на грамм
Если в задаче необходимо вставлять в середину списка, то вырастет всегда - и в общем виде, и в конкретном кольце. А если в задаче не нужно вставлять в середину списка, то выбор связанного списка был ошибкой. А от типа элементов (строки или что-то другое) это вообще не зависит.
0
TRam_
зомбяк
1061 / 779 / 245
Регистрация: 14.05.2017
Сообщений: 2,637
20.02.2018, 00:18 8
Цитата Сообщение от krapotkin Посмотреть сообщение
в конкретном кольце - ни на грамм
В кольце с постоянным числом элементов (т.е. когда вставка/удаление фактически невозможны, и возможна только замена элемента) и фиксированным/ограниченным сверху размером элемента.
0
krapotkin
3632 / 3195 / 1094
Регистрация: 14.04.2014
Сообщений: 15,364
Записей в блоге: 15
20.02.2018, 06:18 9
собсно это я и имел в виду
0
Shamil1
Модератор
2257 / 1540 / 351
Регистрация: 26.03.2015
Сообщений: 5,494
20.02.2018, 09:20 10
Цитата Сообщение от TRam_ Посмотреть сообщение
т.е. когда вставка/удаление фактически невозможны, и возможна только замена элемента
А если в задаче не нужно вставлять в середину списка, то выбор связанного списка был ошибкой.
Мы выбираем реализацию в зависимости от того, какие операции (и как часто) нам нужно выполнять. И если мы изначально выбрали правильную реализацию, то мы уже не можем заменить (без потери производительности) связанный список на массив и наоборот.
0
оранжевая мышь
0 / 0 / 0
Регистрация: 20.02.2018
Сообщений: 4
20.02.2018, 19:29 11
Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Зачем нужны кольцевые односвязные и двусвязные списки? Когда они могут понадобиться?
Пример из моей жизни -- в списке хранятся вершины многоугольника, которые мы обходим по кругу начиная с произвольной; иногда вставляем новые или удаляем.
0
20.02.2018, 19:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2018, 19:29

Кольцевые списки на базе двунаправленных списков
Всем привет! Помогите решить задачу: Пусть L обозначает кольцевой двунаправленный список с...

Отображение и кольцевые списки. Ошибка дизайна в функции отображения в Python 2.x
Common Lisp Известно, что списки могут быть кольцевыми, т.е. cdr последней ячейки списка может...

Кольцевые зависимости структур
Здравствуйте... Такая проблема. У меня возникают кольцевые зависимости структур, и я не знаю как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru