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

Работа со списками - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить сумму элементов массива, расположенных между максимальным и минимальным элементами. http://www.cyberforum.ru/cpp-beginners/thread731774.html
Вычислить сумму элементов массива, расположенных между максимальным и минимальным элементами. Полученную сумму присвоить первому элементу массива. Упорядочить элементы массива по возрастанию методом...
C++ Особенности инкремента Здравствуйте!Возник вопрос касательно операции инкремента(++) допутим у нас есть код #include <iostream> int main() { int a=5; std::cout<<a++; http://www.cyberforum.ru/cpp-beginners/thread731773.html
C++ Подсчёт количества нечётных элементов в каждом столбце матрицы
Пожалуйста помогите написать программу. Дана матрица размеры 5х5. Составить программу для подсчёта количества нечётных элементов в каждом столбце матрицы. Очень срочно надо. Заранее спасибо)))
пояснения про график функции C++
Доброго времени суток. Ситуация следующая, имеется Eclipse + MinGW, в котором надобно написать программу по выводу графиков нескольких функций. Сами ф-ии я написал, но вот на части "вывод графика"...
C++ ввод a b c на выходе c b a http://www.cyberforum.ru/cpp-beginners/thread731764.html
#include <iostream> #include <string> #include <iterator> #include <algorithm> int main() { std::string a; std::getline(std::cin, a);
C++ Машина Тьюринга Помогите пожалуйста с задачей на машине Тьюринга: дано три числа в двоичной системе а, в,с , нужно проверить можно ли составить триугольник со сторонами а, в, с подробнее

Показать сообщение отдельно
Midelll
0 / 0 / 0
Регистрация: 08.06.2012
Сообщений: 16

Работа со списками - C++

15.12.2012, 01:16. Просмотров 670. Ответов 2
Метки (Все метки)

Здравствуйте!

Нужно реализовать много разных функций по работе со списками. Все работает кроме одной.

Есть однонаправленный линейный список. Нужно сделать функцию замены элементов в списке.
В функцию передается 2 id, они удачно находятся, после чего нужно написать те самые несколько строчек, где поменять адреса указателей, чтобы два элемента списка поменялись. Тут то и проблема.

В общем находятся id и т.д. - все правильно, поэтому привожу только часть программы самой замены элементов:

C++
1
2
3
4
5
6
7
8
Elem* a = cur1->next;
Elem* b = cur2->next;
 
Elem* buf = cur1->next->next;
a->next=b->next;
b->next=buf;
cur1->next=b;
cur2->next=a;
тут a и b это найденные по id элементы списка. cur1 и cur2 соответственно стоящие элементы перед темы найденными.

Самое основное это последние 4 строчки. Напомню, список однонаправленный линейный.
Например представим, что у нас 5 элементов в списке. Если менять 2 и 4 - то меняется отлично, и потом 4 и 2 обратно поменять можно. А вот когда я начинаю менять соседние элементы, но тут проблема. Например поменять 3 и 4 не получается. Когда начинаю выводить список на экран, список зацикливается и выводится вот так:
1
2
4
4
4
...

Он как бы поменял 3 и 4, но какой-то адрес не поменялся, и он зацикливается на четверке.

P.S. Первый элемент пока не трогать, там для него в другом месте идет замена. Я тот кусок кода уже изменю исходя из ваших подсказок.

Огромное спасибо заранее!!!

Добавлено через 4 часа 12 минут
Никто не знает как это исправить? Просто нужно сегодня сделать обязательно...

Добавлено через 1 час 40 минут
Вот так задается список
C++
1
2
3
4
5
6
struct Elem 
{
    int id;
    char* str;
    Elem* next;
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru