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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычислить вложенный 33 раза квадратный корень http://www.cyberforum.ru/cpp-beginners/thread1307105.html
S=\sqrt{3+\sqrt{6+\sqrt{9+...\sqrt{99}}}} подскажите как сделать? Массивы при решении задач не используются.
C++ Как вместо char* использовать vector<string>? Здравствуйте, можете объяснить, как это сделать или проще привести какой-нибудь пример, чтобы стало понятно, как это применить к своей программе. http://www.cyberforum.ru/cpp-beginners/thread1307092.html
Задан массив из k символов. Преобразовать массив следующим образом: расположить символы в обратном порядке C++
Задан массив из k символов. Преобразовать массив следующим образом: расположить символы в обратном порядке. Только начали изучать С++, пропустила тему, теперь не могу разобраться... Помогите, пожалуйста...
Функция для вычисления следа матрицы и произведения матриц C++
Дан ряд квадратных матриц A, {A}^{2}, ..., {A}^{N}. Причем N вводим сами. Надо вычислить след(сумма элементов на главной диагонали) каждой матрицы и вывести на экран. Использовать две функции: вычисляющую след матрицы, вычисляющую произведение матриц. Например: Матрица А: 2 2 2 2 След: 2+2=4 Матрица {A}^{2}(т.е. умножаем матрицу саму на себя): 2 2 2 2 12 12 2 2 2 2 12 12...
C++ Прерывание цикла, через клавишу Esc http://www.cyberforum.ru/cpp-beginners/thread1307069.html
Мне нужно в прервать цикл при нажатии клавиши Esc. Делаю через getch(). Все работает, но есть одна проблема, в каждом прогоне цикла нужно 2 раза вводить один и тот же элемент массива, чтобы в 1-ый раз проверялся getch, а во второй это элемент вносился в массив. Как убрать это? Но при этом сохранить проверку на Esc. Код: #include <iostream> #include <conio.h> using namespace std;
C++ Что означают переменные в моей программе? Что означает строчка в программе Data=сh+data, а точнее , что такое ch? подробнее

Показать сообщение отдельно
Nosey
1344 / 395 / 107
Регистрация: 22.10.2014
Сообщений: 860
Завершенные тесты: 2
21.11.2014, 19:58     Поменять местами два элемента односвязного списка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <list>
#include <algorithm>
 
class Data
{
    int _value = rand();
public:
    Data() {};
    int value() const { return _value; }
    void value(int value) { _value = value; }
};
 
std::ostream& operator<<(std::ostream& out, const Data& data)
{
    out << data.value();
    return out;
}
 
struct Swap
{
    int ind1;
    int ind2;
    int curInd = 0;
    Data* data1 = nullptr;
    Data* data2 = nullptr;
    bool isSwap = false;
 
    void operator()(Data& value)
    {
        if (isSwap)
        {
            return;
        }
        if (curInd == ind1)
        {
            data1 = &value;
        }
        else if (curInd == ind2)
        {
            data2 = &value;
        }
        if (data1 != nullptr && data2 != nullptr)
        {
            std::swap(*data1, *data2);
            isSwap = true;
        }
        curInd++;
    }
};
 
void main()
{
    std::list<Data> list;
    int count = 20;
    while (--count >= 0)
    {
        list.emplace_back();
    }
 
    std::ostream_iterator<Data> ost(std::cout, " ");
    std::copy(list.begin(), list.end(), ost);
    std::cout << std::endl;
 
    Swap swap;
    std::cin >> swap.ind1 >> swap.ind2;
    std::for_each(list.begin(), list.end(), swap);
 
    std::cout << std::endl;
    std::copy(list.begin(), list.end(), ost);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru