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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
Kirill2005
1 / 1 / 1
Регистрация: 11.12.2011
Сообщений: 25
#1

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

08.11.2012, 06:41. Просмотров 2351. Ответов 7
Метки нет (Все метки)

Доброго времени суток. Помогите пожалуйста с задачей. Необходимо реализовать функцию, которая меняет местами два элемента в двусвязном списке. Если элементы находятся где-то в середине списка, то затруднений не возникает, но как учесть случаи, когда один из элементов первый или последний, или один - первый, а другой последний?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 06:41     Поменять местами два элемента двусвязного списка
Посмотрите здесь:

Поменять местами два элемента массива C++
Поменять местами два элемента массива C++
Поменять Два элемента динам. массива местами C++
C++ Поменять местами два элемента в списке
C++ Односвязные списки. Поменять местами два элемента
Поменять два элемента односвязного списка C++
Поменять местами два элемента односвязного списка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
748 / 345 / 30
Регистрация: 01.12.2011
Сообщений: 2,041
08.11.2012, 06:48     Поменять местами два элемента двусвязного списка #2
Просто значения меняйте. Не нужно трогать указатели на последний или первый элемент.
Kirill2005
1 / 1 / 1
Регистрация: 11.12.2011
Сообщений: 25
08.11.2012, 07:41  [ТС]     Поменять местами два элемента двусвязного списка #3
Точняк!!!!! Я об этом как-то не подумал. Спасибо!!!
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.11.2012, 14:53     Поменять местами два элемента двусвязного списка #4
Metallnote, вообще-то правильно всё же менять указатели. Обмен элементов через указатели не зависит от хранимых данных, в отличие от реального обмена значениями.
BuPy7
Нет ТЗ - давай досвидания
 Аватар для BuPy7
748 / 345 / 30
Регистрация: 01.12.2011
Сообщений: 2,041
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
748 / 345 / 30
Регистрация: 01.12.2011
Сообщений: 2,041
12.11.2012, 15:44     Поменять местами два элемента двусвязного списка #7
soon, например, в универе =)
Если смотреть на это с разумной точки зрения, то я не прав, т.к. код должен быть написан так, чтоб в случае чего, его можно было доработать\переделать с меньшими затратами времени.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2012, 15:53     Поменять местами два элемента двусвязного списка
Еще ссылки по теме:

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

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

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

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

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