Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Восстановление двусвязного списка. 
:(
    Опции темы
namelessTee
Дата 23.4.2012, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 13.3.2012

Репутация: нет
Всего: нет



Возможно есть какие нибудь алгоритмы, для восстановления двусвязного списка, в ситуации если у одно из не концевых элементов связь была установлена таким образом, что список стал замкнутым (проще говоря образовался деадлок, который превращает обход списка в бесконечный цикл). Задетектить проблему довольно легко - достаточно проверить, что один и тот же элемент появился в цепочке 2 раза, а вот есть ли алгоритм позволяющий восстановить последовательность исходя например из  того, что все остальные элементы корректно изменили все свои связи?
Под корректностью изменения связей понимается, что элемент который должен был идти после элемента вызывающего деадлок, считает элемент вызвавший деадлок предыдущим, и содержит корректную ссылку на следующий элемент.
И это все при условии:
элементы хранятся в одном месте и могут принадлежать разным спискам(идентификатора родительского списка они не содержат);
один и тот же элемент может принадлежать только одному списку; 
первый элемент списка корректен и не вызывает деадлок; 

Интересует не обязательно алгоритм гарантирующий 100% восстановление цепочки, главное что бы было гарантированно - что не будут повреждены остальные списки.
PM MAIL   Вверх
ksnk
Дата 23.4.2012, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



Нужно у списка хранить кроме головы еще и хвост. Если пробегаясь  с головы в хвост получаем deadlock, то нужно пробежаться с хвоста в голову и перерисовать ссылки.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
namelessTee
Дата 23.4.2012, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 13.3.2012

Репутация: нет
Всего: нет



Ага, спасибо, почти к тому же и пришли уже, с той лишь только разницей, что приходится не хранить хвост, а пробегаться по всем элементам и искать путь обратно в список(точнее к деадлоку) . Хвост нельзя хранить по техническим причинам :( .

Это сообщение отредактировал(а) namelessTee - 23.4.2012, 17:21
PM MAIL   Вверх
ksnk
Дата 28.4.2012, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



Цитата(namelessTee @  23.4.2012,  17:21 Найти цитируемый пост)
а пробегаться по всем элементам и искать путь обратно в список(точнее к деадлоку) 

Мнээ.... А ломается именно это список? По которому нужно добежать до дидлока? Как можно по кривому списку восстановить всю цепочку? Можно только выкинуть элементы за циклической ссылкой и сказать, что так и былО.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0811 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.