Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

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

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

Студворк — интернет-сервис помощи студентам
Зачем нужны кольцевые односвязные и двусвязные списки? Когда они могут понадобиться? Ведь, если цель задачи - просто сделать циклический набор данных, можно то же самое решить массивом и операцией индекс mod количество_элементов_в_массиве.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2018, 13:20
Ответы с готовыми решениями:

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

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

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

10
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,879
19.02.2018, 14:13
Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Зачем нужны кольцевые односвязные и двусвязные списки?
Сначала ответьте на вопрос, зачем нужны односвязные и двусвязные списки.

Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
можно то же самое решить массивом
Односвязные и двусвязные списки нельзя заменить массивами и наоборот, так как операции с этими структурами занимают разное время.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
19.02.2018, 15:01  [ТС]
Ну, я как понимаю, вообще связные списки нужны (односвязные и двусвязные) для тех операций, где требуется максимально быстрая вставка и удаление.
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,664
Записей в блоге: 21
19.02.2018, 15:14
Цитата Сообщение от Shamil1 Посмотреть сообщение
нельзя заменить массивами и наоборот
имхо, сильно зависит от обстоятельств
кольцевой список строк например легко заменится массивом
1
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,879
19.02.2018, 17:31
Лучший ответ Сообщение было отмечено Volobuev Ilya как решение

Решение

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

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

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

Добавлено через 3 минуты
Цитата Сообщение от krapotkin Посмотреть сообщение
кольцевой список строк например легко заменится массивом
При этом стоимость вставки вырастет с O(1) до O(n).
1
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,664
Записей в блоге: 21
19.02.2018, 22:48
Цитата Сообщение от Shamil1 Посмотреть сообщение
вырастет с O(1) до O(n).
в общем виде - да. в конкретном кольце - ни на грамм
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,879
19.02.2018, 23:51
Цитата Сообщение от krapotkin Посмотреть сообщение
в общем виде - да. в конкретном кольце - ни на грамм
Если в задаче необходимо вставлять в середину списка, то вырастет всегда - и в общем виде, и в конкретном кольце. А если в задаче не нужно вставлять в середину списка, то выбор связанного списка был ошибкой. А от типа элементов (строки или что-то другое) это вообще не зависит.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
20.02.2018, 00:18
Цитата Сообщение от krapotkin Посмотреть сообщение
в конкретном кольце - ни на грамм
В кольце с постоянным числом элементов (т.е. когда вставка/удаление фактически невозможны, и возможна только замена элемента) и фиксированным/ограниченным сверху размером элемента.
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,664
Записей в блоге: 21
20.02.2018, 06:18
собсно это я и имел в виду
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,879
20.02.2018, 09:20
Цитата Сообщение от TRam_ Посмотреть сообщение
т.е. когда вставка/удаление фактически невозможны, и возможна только замена элемента
А если в задаче не нужно вставлять в середину списка, то выбор связанного списка был ошибкой.
Мы выбираем реализацию в зависимости от того, какие операции (и как часто) нам нужно выполнять. И если мы изначально выбрали правильную реализацию, то мы уже не можем заменить (без потери производительности) связанный список на массив и наоборот.
0
 Аватар для оранжевая мышь
0 / 0 / 0
Регистрация: 20.02.2018
Сообщений: 4
20.02.2018, 19:29
Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Зачем нужны кольцевые односвязные и двусвязные списки? Когда они могут понадобиться?
Пример из моей жизни -- в списке хранятся вершины многоугольника, которые мы обходим по кругу начиная с произвольной; иногда вставляем новые или удаляем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2018, 19:29
Помогаю со студенческими работами здесь

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

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

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

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

Кольцевые гонки
Ребят, помогите, пожалуйста, решить задачу... Идей пока вообще нет, даже не знаю как подступиться... Буду очень благодарен за любую...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru