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

перестановка елементов списка - C++

Восстановить пароль Регистрация
 
kaffein
 Аватар для kaffein
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
02.03.2011, 22:03     перестановка елементов списка #1
Всем доброго времени суток
У меня возник вопрос по двунаправленому списку!
есть такая функция
C++
1
 void per(list *n,list *m)
На вхо берет, например, 3 и 5 елемент списка, нужно переставить их местами
1 1
2 2
3 5
4 4
5 3
6 6
7 7
Помогите написать такую функцию

Добавлено через 49 минут
Я так понял там только указатели нужно поменять.....
Я уже стопку листиков изресовал, но так и не нашёл ответа
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2011, 22:03     перестановка елементов списка
Посмотрите здесь:

C++ Перестановка елементов масива
C++ Знаки елементов.
Количество елементов массива C++
Произведение елементов массива C++
C++ количество елементов массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.03.2011, 22:25     перестановка елементов списка #2
Да, нужно поменять только указатели.
kaffein
 Аватар для kaffein
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
02.03.2011, 23:15  [ТС]     перестановка елементов списка #3
silent_1991, не подскажешь как ето зделать?????
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
02.03.2011, 23:51     перестановка елементов списка #4
Я так понимаю, на вход функции идут узлы списка? Если да, то менять так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Node *n_next = n->next;
Node *n_prev = n->prev;
Node *m_next = m->next;
Node *m_prev = m->prev;
 
m_next->prev = n;
n->next = m_next;
 
n_next->prev = m;
m->next = n_next;
 
n_prev->next = m;
m->prev = n_prev;
 
m_prev->next = n;
n->prev = m_prev;
Остаётся учесть случаи, когда один из элементов первый или последний (мне кажется, что там могут возникнуть исключительные ситуации из-за нулевых указателей, которые надо обработать отдельно, но утверждать не буду - хочется спать и уже лень проверять, так ли это).

Добавлено через 58 секунд
Ну а если не узлы, а значения в них, то надо сначала найти узлы n и m по этим значениям, а потом проделать данные операции.
kaffein
 Аватар для kaffein
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
03.03.2011, 10:57  [ТС]     перестановка елементов списка #5
silent_1991, спасибо большое за помощь Уже завтра буду розбиратся.....

Добавлено через 10 часов 33 минуты
всё розобрал ))))) Я не мог решить это задание , потому что не додумался создать
Node *n_next
Node *n_prev
Node *m_next
Node *m_prev
так всё работает
Yandex
Объявления
03.03.2011, 10:57     перестановка елементов списка
Ответ Создать тему
Опции темы

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