Форум программистов, компьютерный форум CyberForum.ru

Односвязный список - удаление - совет - C++

Восстановить пароль Регистрация
 
Mishnik
 Аватар для Mishnik
14 / 14 / 1
Регистрация: 07.05.2011
Сообщений: 42
10.05.2011, 02:27     Односвязный список - удаление - совет #1
Как лучше удалять элементы из однонаправленного списка?
Я знаю два варианта:
1)[классический] Идем по списку и сохраняем в отдельную переменную указатель на предыдущий элемент. После этого перезаписываем поле next пред. элемента и удаляем уже ненужный элемент.
2)[немного бредовый] Идем по списку. Находим нужный элемент(I). Сохраняем физически след элемент в левую переменную(Q). Удаляем оба элемента и в уже бывшее место хранения I, записываем из переменной Q данные.

В конкретно моей задаче все данные небольшие, поэтому скорость перезаписи должна быть высокой. Удалять придется много раз. Не хочеться с пограничными случаями морочиться...
Большая просьба обосновывать ответ.
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2011, 02:27     Односвязный список - удаление - совет
Посмотрите здесь:

односвязный список удаление элемента C++
Односвязный список C++
Односвязный список C++
Односвязный список C++
Односвязный список. Добавление и удаление в строку C++
Односвязный список (удаление элементов) C++
Односвязный список (очередь). Удаление узла C++
C++ Односвязный список: удаление элемента

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
10.05.2011, 06:28     Односвязный список - удаление - совет #2
Цитата Сообщение от Mishnik
2)[немного бредовый] Идем по списку. Находим нужный элемент(I). Сохраняем физически след элемент в левую переменную(Q). Удаляем оба элемента и в уже бывшее место хранения I, записываем из переменной Q данные.
там может быть большой узел, следовательно и операция с ним займёт больше времени

Цитата Сообщение от Mishnik
Не хочеться с пограничными случаями морочиться...
prev = NULL изначально, так можно определить голову
хвост->next == NULL так что и перезапись указателя на следующий пройдёт нормально, предыдущий станет хвостом
Mishnik
 Аватар для Mishnik
14 / 14 / 1
Регистрация: 07.05.2011
Сообщений: 42
10.05.2011, 11:49  [ТС]     Односвязный список - удаление - совет #3
Спасибо, про хвост знал, но список разветвленный и с головой нельзя так просто.
Yandex
Объявления
10.05.2011, 11:49     Односвязный список - удаление - совет
Ответ Создать тему
Опции темы

Текущее время: 04:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru