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

Поменять местами два элемента двусвязного списка - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
Kirill2005
1 / 1 / 1
Регистрация: 11.12.2011
Сообщений: 25
08.11.2012, 06:41     Поменять местами два элемента двусвязного списка #1
Доброго времени суток. Помогите пожалуйста с задачей. Необходимо реализовать функцию, которая меняет местами два элемента в двусвязном списке. Если элементы находятся где-то в середине списка, то затруднений не возникает, но как учесть случаи, когда один из элементов первый или последний, или один - первый, а другой последний?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
747 / 344 / 30
Регистрация: 01.12.2011
Сообщений: 2,027
08.11.2012, 06:48     Поменять местами два элемента двусвязного списка #2
Просто значения меняйте. Не нужно трогать указатели на последний или первый элемент.
Kirill2005
1 / 1 / 1
Регистрация: 11.12.2011
Сообщений: 25
08.11.2012, 07:41  [ТС]     Поменять местами два элемента двусвязного списка #3
Точняк!!!!! Я об этом как-то не подумал. Спасибо!!!
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.11.2012, 14:53     Поменять местами два элемента двусвязного списка #4
Metallnote, вообще-то правильно всё же менять указатели. Обмен элементов через указатели не зависит от хранимых данных, в отличие от реального обмена значениями.
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
747 / 344 / 30
Регистрация: 01.12.2011
Сообщений: 2,027
12.11.2012, 15:23     Поменять местами два элемента двусвязного списка #5
silent_1991, если узел хранит одно значение, то этот вариант будет быстрее, чем менять указатели на следующий и предыдущий элемент.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
12.11.2012, 15:32     Поменять местами два элемента двусвязного списка #6
Metallnote, как часто вы встречали списки, заточенные под хранение определенного типа данных?
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
747 / 344 / 30
Регистрация: 01.12.2011
Сообщений: 2,027
12.11.2012, 15:44     Поменять местами два элемента двусвязного списка #7
soon, например, в универе =)
Если смотреть на это с разумной точки зрения, то я не прав, т.к. код должен быть написан так, чтоб в случае чего, его можно было доработать\переделать с меньшими затратами времени.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2012, 15:53     Поменять местами два элемента двусвязного списка
Еще ссылки по теме:

Поменять местами два элемента односвязного списка C++
C++ Поменять местами два элемента двусвязного списка и удалить из него указанный элемент
Поменять местами два минимальных элемента в матрице C++

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

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
12.11.2012, 15:53     Поменять местами два элемента двусвязного списка #8
С разумной точки зрения это две различные операции: обменять значения и обменять внутренние элементы. Что быстрее — это второстепенный вопрос по сравнению с семантикой этих операций. Например, обмен значениями не вводит итераторы, указывающие на обмениваемые значения, в заблуждение.

2 ТС:
Или выделяете эти специальные случаи ифами, или вводите фальшивые элементы в самом начале списка и в конце.
Yandex
Объявления
12.11.2012, 15:53     Поменять местами два элемента двусвязного списка
Ответ Создать тему
Опции темы

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