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

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

Войти
Регистрация
Восстановить пароль
 
kaffein
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
#1

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

02.03.2011, 22:03. Просмотров 537. Ответов 4
Метки нет (Все метки)

Всем доброго времени суток
У меня возник вопрос по двунаправленому списку!
есть такая функция
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 минут
Я так понял там только указатели нужно поменять.....
Я уже стопку листиков изресовал, но так и не нашёл ответа
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2011, 22:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос перестановка елементов списка (C++):

Перестановка елементов масива - C++
Уважаемые форумчане помогите решить эту сложную задачу: Действительные векторы заданы X(x1,x2,..,x50) и Y(y1,y2,..,y50) превратить по...

шаблон функции который принимает в параметры массив количиство елементов и должен найти сумму елементов массив - C++
шаблон функции который принимает в параметры массив количиство елементов и должен найти сумму елементов массива

Написать код программы, выполняющей растяжку списка и вставку, удаление из списка и сжатие списка - C++
Люди ПОМОГИТЕ осталось совсем мало , мне нужна помощь!!! написать код программ: 1) Написать код программы, выполняющей растяжку...

Массив из n елементов - C++
Разбираю код пример из книги, и вот столкнулся с недопониманием фрагмента кодпервое понятно что для инициализвации массива а из н, но не...

Знаки елементов. - C++
Условие: Ввести с клавиатуры N элементов и проверить чередуются ли знаки. Если да , то вывести на экран "знаки одинаковые". Если...

Удаление елементов вектора - C++
никак не могу разобраться с итераторами: Мне нужно удалить элемент ветора, для этого я пользуюсь функцией erase К примеру мне нужно...

4
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
02.03.2011, 22:25 #2
Да, нужно поменять только указатели.
0
kaffein
5 / 5 / 1
Регистрация: 14.11.2010
Сообщений: 121
02.03.2011, 23:15  [ТС] #3
silent_1991, не подскажешь как ето зделать?????
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 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 по этим значениям, а потом проделать данные операции.
1
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
так всё работает
0
03.03.2011, 10:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2011, 10:57
Привет! Вот еще темы с ответами:

Замена елементов текста - C++
пишу програму на Borland C++ 3.01, и мне нужно считать информацию с файла, вывести её на екран. Ето я зделал... #include <iostream.h> ...

Замена елементов в матрице - C++
Всем привет, можете помочь с заданием ? Нужно заменить самый большой элемент каждой строки матрицы, суммой элементов размещенных до нее....

Произведение елементов массива - C++
//в массиве состоящем из Н целочисленных елементов вычислить 1)сумму неотрицательных елементов этого массива //2)произведение елементов...

количество елементов массива - C++
подсчитать количество елементов массива c(6)=(2,1;3,6;-6,3;4,1;2,2;-2,3),значение которых больше 2,3.


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

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

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