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

Сформировать двунаправленный список. Удалить из него элемент с заданным ключом, добавить элемент с указанным номером - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать структуру, содержаую данные фамилию, имя, дату рождения и телефонный номер http://www.cyberforum.ru/cpp-beginners/thread1132684.html
Создать структуру, содержаую данные фамилию, имя, дату рождения и телефонный номер. Сортировать по номерам телефона и, если вводить фамилию сотрудника, выводить на экран его данные, если его нет в списке выводить слово например, такого нету в базе. У меня проблема с выводом данных из структуры при соответствующем вводе. #include <cstdlib> #include <iostream> using namespace std; ...
C++ Непонятное поведение простейшей формулы Добрый вечер. Дано: double a; double d; unsigned int c; unsigned int b; for loop{ //манипуляции http://www.cyberforum.ru/cpp-beginners/thread1132678.html
C++ OpenMP
Помогите, пожалуйста, с реализацией алгоритма Фокса на openmp. Не очень понимаю, как параллелить. Есть вариант под MPI. #include <Mpi.h> #include <stdio.h> int ProcNum = 0; // Количество доступных процессов int ProcRank = 0; // Ранг текущего процесса int GridSize; // Размер виртуальной решетки процессов int GridCoords; // Координаты текущего процесса в процессной //...
C++ перезапись ряда одним и тем же значением
#include "stdafx.h" #include <iostream> #include <fstream> using namespace std; struct MyStruct { char *surname; };
C++ игра "Змейка" http://www.cyberforum.ru/cpp-beginners/thread1132656.html
#include <iostream> //стандартная библиотека #include <time.h> //случайные числа #include <stdio.h> //для printf #include <windows.h> // для HANDLE, курсора, цвета #include <conio.h> //для kbhit using namespace std; HANDLE hConsole; //HANDLE hStdout, hStdin; HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
C++ Непрерывную последовательность 0 и 1 закодировать 5-битным кодом добрый вечер! столкнулся с проблемой в задаче, сама задача состоит в следующем: непрерывную последовательность 0 и 1 закодировать 5-битным кодом, где 4 первых бита отводятся под количество кодируемых символов, а последний - под объект кодирования(то есть четыре подряд идущих единицы должны кодироваться , как 00111) нужно написать кодирование и раскодирование, ввод/вывод происходит из/в... подробнее

Показать сообщение отдельно
igorrr37
1642 / 1270 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
29.03.2014, 12:19     Сформировать двунаправленный список. Удалить из него элемент с заданным ключом, добавить элемент с указанным номером
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <iostream>
#include <cstring>
 
class List
{
public:
    List() : root(0){}
    void Add(char const* rhs)
    {
        if(!root)
            root = new Node(0, rhs);
        else
            root->Add(rhs);
    }
    void Erase(char const* rhs)
    {
        if(root)
        {
            if(!strcmp(root->pstr, rhs))
            {
                std::cout << "Found lst\n";
                Node* tmp = root;
                root = root->next;
                if(root)
                    root->prev = 0;
                tmp->prev = 0;
                tmp->next = 0;
                delete tmp;
                std::cout << "Erased lst\n";
            }
            else
                root->Erase(rhs);
        }
    }
    ~List()
    {
        delete root;
        root = 0;
    }
private:
    struct Node
    {
        Node(Node* pnode) : prev(pnode), next(0), pstr(0){}
        Node(Node* pnode, char const* rhs) : prev(pnode), next(0)
        {
            pstr = new char[strlen(rhs) + 1];
            strcpy(pstr, rhs);
        }
        void Add(char const* rhs)
        {
            if(!next)
                next = new Node(this, rhs);
            else
                next->Add(rhs);
        }
        void Erase(char const* rhs)
        {
            if(!strcmp(rhs, pstr))
            {
                std::cout << "Found\n";
                prev->next = next;
                if(next)
                    next->prev = prev;
                prev = 0;
                next = 0;
                delete this;
                std::cout << "Erased\n";
            }
            else if(next)
                next->Erase(rhs);
 
        }
        ~Node()
        {
            if(next)
                delete next;
            prev = 0;
            next = 0;
            std::cout << "Destructor: " << pstr << '\n';
            delete[] pstr;
            pstr = 0;
        }
        Node* prev, *next;
        char* pstr;
    private:
        Node(Node const&);
        Node& operator=(Node);
    };
    Node* root;
    List(List const&);
    List& operator=(List);
    friend struct Node;
};
 
int main()
{
    List lst;
    lst.Add("dfdf");
    lst.Add("ghgh");
    lst.Add("kjkj");
    lst.Erase("ghgh");
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru