Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425

Двунаправленный список

18.12.2019, 12:37. Показов 3089. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При удалении первого элемента программа крашится. В чём может быть ошибка?
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#include <iostream>
#include<clocale>
using namespace std;
struct Node {
    int d;
    Node *next;
    Node *prev;
 
};
void add(Node *&begin, int d);
Node* find(Node* begin, int i);
bool insert(Node*begin, int key, int d);
void print(Node*begin);
bool remove(Node*begin, int key);
void printend(Node *Node);
 
 
int main()
{
    int n, g, a, b, d;
    setlocale(LC_ALL, "Russian");
    Node* begin = nullptr;
 
    int e;
    do {
        system("pause");
        system("cls");
        cout << "Введите номер выбора : " << endl;
        cout << "1)Заполнить и вывести.  " << endl;
        cout << "2)Вывести.  " << endl;
        cout << "3)Удалить из списка." << endl;
        cout << "4)Добавить после выбранного номера. " << endl;
        cout << "5)Вывести список в обратном порядке. " << endl;
        cout << "6)Добавить число в конец списка. " << endl;
        cout << "7)Выйти из программы.  " << endl;
        cin >> e;
 
        switch (e)
        {
        case 1:
        {
            for (int i = 1; i < 10; i++)
                add(begin, i); print(begin);
        }
        cout << '\n';; break;
        case 5: {
            printend(begin);
            cout << '\n';
        }; break;
        case 2: {
            print(begin);
            cout << '\n';
        }; break;
 
 
        case 4: {
            print(begin);
            cout << "\nВведите цифру после которой хотите добавить число: ";
            cin >> a;
            cout << "Введите число которое хотите добавить: ";
            cin >> b;
            insert(begin, a, b);
            print(begin);
            cout << '\n';
        }; break;
        case 3: {
            print(begin);
            cout << "\nВведите цифру которую хоите удалить: ";
            cin >> n;
            cout << '\n';
            if (!remove(begin, n))cout << "Ошибка " << endl;
            cout << "\nОбновлённй список: ";
            print(begin);
 
            cout << '\n';
        }; break;
 
        case 6:
        {
            cout << "Введите число которое хотите добавить в конец списка: " << endl;
            int i;
            int s;
            cin >> s;
            i = s;
                add(begin, i); print(begin);
        }; 
        break;
        case 7: {
            return 0;
    
        }; break;
 
        default:cout << "Введите цифру от 1 до 5: " << endl;
            break;
        }
 
    }
 
 
 
    while (e != 8);
    system("Pause");
    return 0;
}
 
 
//поиск элемента по ключу 
Node * find(Node * begin, int d)
{
    Node*cur = begin;
    while (cur) {
        if (cur->d == d)break;
        cur = cur->next;
    }
    return cur;
}
//вставка элемента после заданного 
bool insert(Node * begin, int key, int d) {
    Node *pkey = find(begin, key);
    if (!pkey) return false;
    Node *cur = new Node;
    cur->d = d;
    cur->next = pkey->next;
    cur->prev = pkey;
    pkey->next = cur;
    if (cur->next != nullptr) (cur->next)->prev = cur;
    return true;
}
 
//вывод обратного списка на экран 
void printend(Node *Node)
{
    if (Node) {
        printend(Node->next);
        cout << (Node->d) << ' ';
    }
}
//удаление элемента 
bool remove(Node * begin, int key)
{
    Node *cur = find(begin, key);
    if (!cur)return false;
    if (cur == begin) {
        begin = begin->next;
        begin->prev = nullptr;
    }
    else
    {
        (cur->prev)->next = cur->next;
        if (cur->next != nullptr)(cur->next)->prev = cur->prev;
    }
    delete cur;
    return true;
}
 
//добавление в конец списка 
void add(Node *& begin, int d)
{
    Node *cur = new Node;
    cur->d = d;
    cur->next = nullptr;
    if (!begin) { begin = cur; cur->prev = nullptr; }
    else
    {
        Node*temp = begin;
        while (temp->next)
 
            temp = temp->next;
        temp->next = cur;
        cur->prev = temp;
 
 
    }
}
 
//вывод списка на экран 
void print(Node * begin)
{
    Node* cur = begin;
    while (cur)
    {
        cout << cur->d << ' ';
        cur = cur->next;
 
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.12.2019, 12:37
Ответы с готовыми решениями:

Двунаправленный список
Чемпион мира по футболу. Страна, год последней победы, число побед. Сортировка по названию. Вычисление среднего числа титулов всех...

Двунаправленный список
Помогите пожалуйста удалить заданный элемент из двунаправленного списка... Напишите как это делается

двунаправленный список.
Доброго времени суток. Прощу помочь с заданием которое звучит так : Построить кольцевой двунаправлений список. Значения элементов...

20
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.12.2019, 12:42
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
При удалении первого элемента программа крашится. В чём может быть ошибка?
В том, что при удалении первого элемента должна изменяться переменная begin

Добавлено через 1 минуту
Сделай там тоже ссылку bool remove(Node *&begin, int key)
1
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
18.12.2019, 12:53  [ТС]
При таком исправлении вылезло ещё больше ошибок.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.12.2019, 12:55
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
При таком исправлении вылезло ещё больше ошибок.
Каких?
0
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
18.12.2019, 12:59  [ТС]
Исправил 139 строку на:bool remove(Node *&begin, int key)
Ошибки:
1) Серьезность Код Описание Проект Файл Строка Состояние подавления
Предупреждение C4101 d: неиспользованная локальная переменная ConsoleApplication179 c:\users\дом\source\repos\consoleapplica tion179\consoleapplication179\consoleapp lication179.cpp 21
2)Серьезность Код Описание Проект Файл Строка Состояние подавления
Предупреждение C4101 g: неиспользованная локальная переменная ConsoleApplication179 c:\users\дом\source\repos\consoleapplica tion179\consoleapplication179\consoleapp lication179.cpp 21
3)Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка LNK1120 неразрешенных внешних элементов: 1 ConsoleApplication179 C:\Users\Дом\source\repos\ConsoleApplica tion179\Debug\ConsoleApplication179.exe 1
4)Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка LNK2019 ссылка на неразрешенный внешний символ "bool __cdecl remove(struct Node *,int)" (?remove@@YA_NPAUNode@@H@Z) в функции _main ConsoleApplication179 C:\Users\Дом\source\repos\ConsoleApplica tion179\ConsoleApplication179\ConsoleApp lication179.obj 1
5)Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) E0308 существует более одного экземпляра перегруженная функция "remove", соответствующего списку аргументов: ConsoleApplication179 C:\Users\Дом\source\repos\ConsoleApplica tion179\ConsoleApplication179\ConsoleApp lication179.cpp 72
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.12.2019, 13:01
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Ошибка (активно) E0308 существует более одного экземпляра перегруженная функция "remove", соответствующего списку аргументов: ConsoleApplication179 C:\Users\Дом\source\repos\ConsoleApplica tion179\ConsoleApplication179\ConsoleApp lication179.cpp 72
Везде добавь ссылку, вверху тоже
oid print(Node*begin);
bool remove(Node *&begin, int key);
void printend(Node *Node);
1
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
18.12.2019, 13:03  [ТС]
Исправил, всё равно крашит(
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#include "pch.h"
#include <iostream>
#include<clocale>
using namespace std;
struct Node {
    int d;
    Node *next;
    Node *prev;
 
};
void add(Node *&begin, int d);
Node* find(Node* begin, int i);
bool insert(Node*begin, int key, int d);
void print(Node*begin);
bool remove(Node *&begin, int key);
void printend(Node *Node);
 
 
int main()
{
    int n, g, a, b, d;
    setlocale(LC_ALL, "Russian");
    Node* begin = nullptr;
 
    int e;
    do {
        system("pause");
        system("cls");
        cout << "Введите номер выбора : " << endl;
        cout << "1)Заполнить и вывести.  " << endl;
        cout << "2)Вывести.  " << endl;
        cout << "3)Удалить из списка." << endl;
        cout << "4)Добавить после выбранного номера. " << endl;
        cout << "5)Вывести список в обратном порядке. " << endl;
        cout << "6)Добавить число в конец списка. " << endl;
        cout << "7)Выйти из программы.  " << endl;
        cin >> e;
 
        switch (e)
        {
        case 1:
        {
            for (int i = 1; i < 10; i++)
                add(begin, i); print(begin);
        }
        cout << '\n';; break;
        case 5: {
            printend(begin);
            cout << '\n';
        }; break;
        case 2: {
            print(begin);
            cout << '\n';
        }; break;
 
 
        case 4: {
            print(begin);
            cout << "\nВведите цифру после которой хотите добавить число: ";
            cin >> a;
            cout << "Введите число которое хотите добавить: ";
            cin >> b;
            insert(begin, a, b);
            print(begin);
            cout << '\n';
        }; break;
        case 3: {
            print(begin);
            cout << "\nВведите цифру которую хоите удалить: ";
            cin >> n;
            cout << '\n';
            if (!remove(begin, n))cout << "Ошибка " << endl;
            cout << "\nОбновлённй список: ";
            print(begin);
 
            cout << '\n';
        }; break;
 
        case 6:
        {
            cout << "Введите число которое хотите добавить в конец списка: " << endl;
            int i;
            int s;
            cin >> s;
            i = s;
            add(begin, i); print(begin);
        };
        break;
        case 7: {
            return 0;
 
        }; break;
 
        default:cout << "Введите цифру от 1 до 5: " << endl;
            break;
        }
 
    }
 
 
 
    while (e != 8);
    system("Pause");
    return 0;
}
 
 
//поиск элемента по ключу 
Node * find(Node * begin, int d)
{
    Node*cur = begin;
    while (cur) {
        if (cur->d == d)break;
        cur = cur->next;
    }
    return cur;
}
//вставка элемента после заданного 
bool insert(Node * begin, int key, int d) {
    Node *pkey = find(begin, key);
    if (!pkey) return false;
    Node *cur = new Node;
    cur->d = d;
    cur->next = pkey->next;
    cur->prev = pkey;
    pkey->next = cur;
    if (cur->next != nullptr) (cur->next)->prev = cur;
    return true;
}
 
//вывод обратного списка на экран 
void printend(Node *Node)
{
    if (Node) {
        printend(Node->next);
        cout << (Node->d) << ' ';
    }
}
//удаление элемента 
bool remove(Node *&begin, int key)
{
    Node *cur = find(begin, key);
    if (!cur)return false;
    if (cur == begin) {
        begin = begin->next;
        begin->prev = nullptr;
    }
    else
    {
        (cur->prev)->next = cur->next;
        if (cur->next != nullptr)(cur->next)->prev = cur->prev;
    }
    delete cur;
    return true;
}
 
//добавление в конец списка 
void add(Node *& begin, int d)
{
    Node *cur = new Node;
    cur->d = d;
    cur->next = nullptr;
    if (!begin) { begin = cur; cur->prev = nullptr; }
    else
    {
        Node*temp = begin;
        while (temp->next)
 
            temp = temp->next;
        temp->next = cur;
        cur->prev = temp;
 
 
    }
}
 
//вывод списка на экран 
void print(Node * begin)
{
    Node* cur = begin;
    while (cur)
    {
        cout << cur->d << ' ';
        cur = cur->next;
 
    }
}
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.12.2019, 13:09
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Исправил, всё равно крашит(
insert не вызываешь перед этим? Он тоже кривой
0
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
18.12.2019, 13:12  [ТС]
Вызываю. А с инсертом что не так?

Добавлено через 1 минуту
Если заполнить список автоматически и удалить первый элемент - теперь все работает, а с инсертом нет. Я и не думал, что в нём может быть проблема. Спасибо за 1 исправленную ошибочку. Подскажите пожалуйста, в чем может быть тут трабла?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.12.2019, 13:15
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Вызываю. А с инсертом что не так?
То же самое - если ты добавляешь в голову, begin должна поменяться везде, т.е. нужно сделать ссылку и учитывать это, по-аналогии с add и remove
0
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
18.12.2019, 13:28  [ТС]
то есть нужно добавить & в insert?

Добавлено через 12 минут
Вроде как исправил, но всё равно крашит. Я что-то упустил?
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#include "pch.h"
#include <iostream>
#include<clocale>
using namespace std;
struct Node {
    int d;
    Node *next;
    Node *prev;
 
};
void add(Node *&begin, int d);
Node* find(Node* begin, int i);
bool insert(Node* &begin, int key, int d);
void print(Node*begin);
bool remove(Node *&begin, int key);
void printend(Node *Node);
 
 
int main()
{
    int n, g, a, b, d;
    setlocale(LC_ALL, "Russian");
    Node* begin = nullptr;
 
    int e;
    do {
        system("pause");
        system("cls");
        cout << "Введите номер выбора : " << endl;
        cout << "1)Заполнить и вывести.  " << endl;
        cout << "2)Вывести.  " << endl;
        cout << "3)Удалить из списка." << endl;
        cout << "4)Добавить после выбранного номера. " << endl;
        cout << "5)Вывести список в обратном порядке. " << endl;
        cout << "6)Добавить число в конец списка. " << endl;
        cout << "7)Выйти из программы.  " << endl;
        cin >> e;
 
        switch (e)
        {
        case 1:
        {
            for (int i = 1; i < 10; i++)
                add(begin, i); print(begin);
        }
        cout << '\n';; break;
        case 5: {
            printend(begin);
            cout << '\n';
        }; break;
        case 2: {
            print(begin);
            cout << '\n';
        }; break;
 
 
        case 4: {
            print(begin);
            cout << "\nВведите цифру после которой хотите добавить число: ";
            cin >> a;
            cout << "Введите число которое хотите добавить: ";
            cin >> b;
            insert(begin, a, b);
            print(begin);
            cout << '\n';
        }; break;
        case 3: {
            print(begin);
            cout << "\nВведите цифру которую хоите удалить: ";
            cin >> n;
            cout << '\n';
            if (!remove(begin, n))cout << "Ошибка " << endl;
            cout << "\nОбновлённй список: ";
            print(begin);
 
            cout << '\n';
        }; break;
 
        case 6:
        {
            cout << "Введите число которое хотите добавить в конец списка: " << endl;
            int i;
            int s;
            cin >> s;
            i = s;
            add(begin, i); print(begin);
        };
        break;
        case 7: {
            return 0;
 
        }; break;
 
        default:cout << "Введите цифру от 1 до 5: " << endl;
            break;
        }
 
    }
 
 
 
    while (e != 8);
    system("Pause");
    return 0;
}
 
 
//поиск элемента по ключу 
Node * find(Node * begin, int d)
{
    Node*cur = begin;
    while (cur) {
        if (cur->d == d)break;
        cur = cur->next;
    }
    return cur;
}
//вставка элемента после заданного 
bool insert(Node * &begin, int key, int d) {
    Node *pkey = find(begin, key);
    if (!pkey) return false;
    Node *cur = new Node;
    cur->d = d;
    cur->next = pkey->next;
    cur->prev = pkey;
    pkey->next = cur;
    if (cur->next != nullptr) (cur->next)->prev = cur;
    return true;
}
 
//вывод обратного списка на экран 
void printend(Node *Node)
{
    if (Node) {
        printend(Node->next);
        cout << (Node->d) << ' ';
    }
}
//удаление элемента 
bool remove(Node *&begin, int key)
{
    Node *cur = find(begin, key);
    if (!cur)return false;
    if (cur == begin) {
        begin = begin->next;
        begin->prev = nullptr;
    }
    else
    {
        (cur->prev)->next = cur->next;
        if (cur->next != nullptr)(cur->next)->prev = cur->prev;
    }
    delete cur;
    return true;
}
 
//добавление в конец списка 
void add(Node *& begin, int d)
{
    Node *cur = new Node;
    cur->d = d;
    cur->next = nullptr;
    if (!begin) { begin = cur; cur->prev = nullptr; }
    else
    {
        Node*temp = begin;
        while (temp->next)
 
            temp = temp->next;
        temp->next = cur;
        cur->prev = temp;
 
 
    }
}
 
//вывод списка на экран 
void print(Node * begin)
{
    Node* cur = begin;
    while (cur)
    {
        cout << cur->d << ' ';
        cur = cur->next;
 
    }
}
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.12.2019, 13:32
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Вроде как исправил, но всё равно крашит. Я что-то упустил?
Там тоже надо проверять if (pkey == begin) ....., примерно как в remove
1
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
18.12.2019, 13:48  [ТС]
Простите за наглость, можете пожалуйста помочь дописать код? Не совсем понимаю, пытаюсь сейчас сделать, не выходит.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.12.2019, 14:14
Лучший ответ Сообщение было отмечено Pandaprogrammer как решение

Решение

Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Простите за наглость, можете пожалуйста помочь дописать код? Не совсем понимаю, пытаюсь сейчас сделать, не выходит.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void insert_after(Node *&begin, int d, Node *pos) 
{
    Node *cur = new Node;
    cur->d = d;
    if (!pos)
    {
        cur->prev = nullptr;
        cur->next = begin;
        begin = begin->prev = cur;
    }
    else 
    {
        cur->next = pos->next;
        cur->prev = pos;
 
        if (pos->next)
            pos->next->prev = cur;
        pos->next = cur;
    }
}
Добавлено через 3 минуты
Только нужно ещё сделать функцию find, которая будет возвращать null, если элемент нужно добавить в начало списка и указатель на последний элемент, если в конец. Хотя, может и твоя подойдёт
C++
1
2
3
Node *p = find(begin, 123);
if (p)
   insert_after(begin, 456, p);
Добавлено через 6 секунд
Только нужно ещё сделать функцию find, которая будет возвращать null, если элемент нужно добавить в начало списка и указатель на последний элемент, если в конец. Хотя, может и твоя подойдёт
C++
1
2
3
Node *p = find(begin, 123);
if (p)
   insert_after(begin, 456, p);
1
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
18.12.2019, 14:16  [ТС]
Выходит мой нынешний инсерт можно полностью делитнуть и вставить Ваш? С файндом вроде всё хорошо у меня, работает
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.12.2019, 14:26
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Выходит мой нынешний инсерт можно полностью делитнуть и вставить Ваш? С файндом вроде всё хорошо у меня, работает
Хотя, твой вроде тоже должен работать

Добавлено через 6 минут
Моим разве что можно заменить и add и insert. А так, у тебя вроде всё корректно.
Единственно, обратную распечатку лучше сделать без рекурсии - найти последний элемент и пробежаться по prev
1
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
18.12.2019, 14:28  [ТС]
Благодарю. И последний вопросик. Если удалить все элементы из списка - у меня программа тоже крашится. С чем это может быть связано?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.12.2019, 14:35
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Благодарю. И последний вопросик. Если удалить все элементы из списка - у меня программа тоже крашится. С чем это может быть связано?
C++
1
2
3
4
5
6
7
8
9
bool remove(Node *&begin, int key)
{
    Node *cur = find(begin, key);
    if (!cur)return false;
    if (cur == begin) {
        begin = begin->next;
if (begin)
        begin->prev = nullptr;
    }
0
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
18.12.2019, 14:47  [ТС]
Верно? Заменил ремув свой, оставив delete. Ругается на:
1)Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C1075 "{": не найдена несоответствующая лексема ConsoleApplication180 c:\users\дом\source\repos\consoleapplica tion180\consoleapplication180\consoleapp lication180.cpp 180
2)Серьезность Код Описание Проект Файл Строка Состояние подавления
Предупреждение C4101 d: неиспользованная локальная переменная ConsoleApplication180 c:\users\дом\source\repos\consoleapplica tion180\consoleapplication180\consoleapp lication180.cpp 22
3)Серьезность Код Описание Проект Файл Строка Состояние подавления
Предупреждение C4101 g: неиспользованная локальная переменная ConsoleApplication180 c:\users\дом\source\repos\consoleapplica tion180\consoleapplication180\consoleapp lication180.cpp 22

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool remove(Node *&begin, int key)
{
    Node *cur = find(begin, key);
    if (!cur)return false;
    if (cur == begin)
    {
        begin = begin->next;
        if (begin)
            begin->prev = nullptr;
    }
    delete cur;
    return true;
    
}
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.12.2019, 14:49
Лучший ответ Сообщение было отмечено Pandaprogrammer как решение

Решение

Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Верно? Заменил ремув свой, оставив delete. Ругается на:
Там только if (begin) надо было добавить, остальное всё оставь

Добавлено через 10 секунд
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Верно? Заменил ремув свой, оставив delete. Ругается на:
Там только if (begin) надо было добавить, остальное всё оставь
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2019, 14:49
Помогаю со студенческими работами здесь

Двунаправленный список
Вопросы: Почему ругается при таком описании, говорит ; пропустил spis_fam * Create_first(char *); //формирование первого элемента ...

Двунаправленный список
Как создать двунаправленный список из целых чисел? и как заменить повторяющиеся последовательности одним числом?

двунаправленный список
Используя двунаправленный список, написать программу сложения двух длинных целых чисел. Что такое двунаправленный список понимаю, но как...

Двунаправленный список
Люди, объясните пжлст, что такое двунаправленный список?

Двунаправленный список!
Не Класс! Помогите создать список (Двунаправленный хоронящий int a ) сама проблема в том что я не пойму как организовать ссылку на...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru