Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mishnik
14 / 14 / 1
Регистрация: 07.05.2011
Сообщений: 42
#1

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

10.05.2011, 02:27. Просмотров 1021. Ответов 2
Метки нет (Все метки)

Как лучше удалять элементы из однонаправленного списка?
Я знаю два варианта:
1)[классический] Идем по списку и сохраняем в отдельную переменную указатель на предыдущий элемент. После этого перезаписываем поле next пред. элемента и удаляем уже ненужный элемент.
2)[немного бредовый] Идем по списку. Находим нужный элемент(I). Сохраняем физически след элемент в левую переменную(Q). Удаляем оба элемента и в уже бывшее место хранения I, записываем из переменной Q данные.

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

Односвязный список: удаление элемента - C++
написал такой код . но оно не удаляет первый элемент . как исправить ? bool DeleteByIndex(Us* first,int index) { Us* prev=0; ...

Односвязный список (удаление элементов) - C++
Функция должна удалять все элементы у которых поле будет совпадать с полем которое введет пользователь. Знаю, что здесь надо...

Односвязный список (очередь). Удаление узла - C++
Необходимо определить есть ли в списке узел, содержащий значение, введенное с клавиатуры. Если такое значение есть, удалить этот узел....

Односвязный список. Добавление и удаление в строку - C++
Здравствуйте, есть задача. Дана строка, если в ней встречается '*', то нужно удвоить ее, если встречаются два '-' подряд, то нужно один...

Односвязный список: оптимальное удаление элемента - C++
оптимальный способ удаления из односвязное списка любого элемента списка?

Сформировать список из 10 книг, используя динамическую структуру данных односвязный список - C++
друзья спасайте Сформировать список из 10 книг, используя динамическую структуру данных односвязный список С++

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

Цитата Сообщение от Mishnik
Не хочеться с пограничными случаями морочиться...
prev = NULL изначально, так можно определить голову
хвост->next == NULL так что и перезапись указателя на следующий пройдёт нормально, предыдущий станет хвостом
1
Mishnik
14 / 14 / 1
Регистрация: 07.05.2011
Сообщений: 42
10.05.2011, 11:49  [ТС] #3
Спасибо, про хвост знал, но список разветвленный и с головой нельзя так просто.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2011, 11:49
Привет! Вот еще темы с ответами:

Создать двусвязный список групп факультета, где каждая группа представляет собой односвязный список студентов - C++
Задание: создайте двусвязный список групп факультета. Каждая группа представляет собой односвязный список студентов. Помогите пожалуйста,...

Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке - C++
Задали односвязный линейный список с целыми числами. Создать новый список, который содержит элементы заданного списка в обратном порядке.

Односвязный список - C++
Задание: Необходимо реализовать односвязный список. В качестве информационной части элемента выступают координаты точки. Необходимо...

Односвязный список - C++
Дан список целых чисел , удалить все положительные. struct my_list{ int num; struct my_list*Next; } int x; my_list...


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

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

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