0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 11
|
|
1 | |
Удалить элемент из середины двусвязного списка18.06.2013, 13:43. Показов 2405. Ответов 8
Метки нет (Все метки)
0
|
18.06.2013, 13:43 | |
Ответы с готовыми решениями:
8
Как из двусвязного списка удалить заданный элемент Если все элементы «двусвязного списка» отрицательны, то удалить элемент «стека» Поменять местами два элемента двусвязного списка и удалить из него указанный элемент Добавить элемент в начало двусвязного списка |
442 / 410 / 132
Регистрация: 21.01.2012
Сообщений: 974
|
||||||
18.06.2013, 14:01 | 2 | |||||
0
|
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 11
|
|
18.06.2013, 23:01 [ТС] | 4 |
спасибо
0
|
Higher
|
|
18.06.2013, 23:15 | 5 |
Не обязательно, сложность у них одинаковая. Списку ведь нужно для начала получить итератор на удаляемый элемент, а для этого ему потребуется пробежать половину элементов, причем с относительно высокой константой. Ну а вектору/деку нужно сдвинуть половину элементов с конца (при этом должен активно использоватся кеш, так что константа должна быть меньше, чем у списка).
0
|
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 11
|
|
19.06.2013, 01:05 [ТС] | 6 |
Но мне надо именно из середины дека удалить элемент, который находится в середине. Я просто имел ввиду двусвязный список, потому, что в нём же по ходу тоже с двумя концами можно работать. А так требуется в деке.
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
19.06.2013, 11:29 | 7 | |||||
Решил проверить. Родил такой код:
Кликните здесь для просмотра всего текста
На простых типах, например char, дек оказался быстрее в ~10 раз (https://ideone.com/ZS148B) Но вот на типе, который требует "тяжелого" копирования, получилось радикально иначе (https://ideone.com/Ql4qB6)
1
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
19.06.2013, 21:42 | 9 |
Ну, хотя бы уж с копированием указателя.
http://ideone.com/lFgReX Добавлено через 13 минут P.S. И кстати const C&& это сильно
0
|
19.06.2013, 21:42 | |
19.06.2013, 21:42 | |
Помогаю со студенческими работами здесь
9
Функция, удаляющая элемент из двусвязного списка Элемент двусвязного списка содержит указатель на строку. Вставить строку в конец списка Нужно удалить элемент или элементы из середины дека Переместить данный элемент в конец двусвязного списка и вывести указатели на первый и последний элементы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |