Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.10.2022
Сообщений: 17
1

Удаление элементов двунаправленного списка

10.05.2023, 20:53. Показов 603. Ответов 4

Author24 — интернет-сервис помощи студентам
Задача: В созданном двунаправленном списке удалить чётные элементы. Без строчки else {lst.erase(pos_it); } всё работает, но с ней вылетает ошибка. Пробовал и lst.erase, lst.removе, но ничего не получается. Как удалить чётные элементы?
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
#include <iostream>
#include <list>
#include <math.h>
 
using namespace std;
 
int main() {
 
    setlocale(LC_ALL, "rus");
 
    list<int>lst = { 1, 2, 3, 4, 5 };
    list<int>::iterator pos_it;
    list<int>::iterator it;
 
    cout << "Количество элементов: " << lst.size() << endl << endl;
 
    cout << "Список до изменения: ";
    for (it = lst.begin(); it != lst.end(); ++it) {
        cout << *it << " ";
 
    }
    cout << endl << endl;
      
    cout << "Удаление чётных элементов: ";
    
    for (pos_it = lst.begin(); pos_it != lst.end(); ++pos_it) {
        if (*pos_it % 2 == 1) { cout <<*pos_it << " " ;}
        else {lst.erase(pos_it); }
    }
 
    cout << "Список после изменения: ";
    for (auto it = lst.cbegin(); it != lst.cend(); ++it)
        cout << *it << " ";
    cout << endl << endl;
 
    
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2023, 20:53
Ответы с готовыми решениями:

Удаление из двунаправленного списка
Программа компилируется, добавляет элементы в список, но когда доходит до удаления вылетает. ...

Получить указатель на элемент двунаправленного списка, добавить значение в начало списка и очистить его
Нужно создать двунаправленный список //вроде так, но не уверен struct Double_List {//структура...

Сортировка двунаправленного списка
Посоветуйте пожалуйста адекватный метод сортировки двунаправленного списка. Я сопсно вычитал на...

Сортировка двунаправленного списка
Помогите отсортировать составленный список по определенному полю, я пробовал методом пузырька, но...

4
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
10.05.2023, 20:59 2
Лучший ответ Сообщение было отмечено Morofer как решение

Решение

Уже сто раз объясняли про это удаление. Читай, что erase возвращает, и используй.
1
0 / 0 / 0
Регистрация: 09.10.2022
Сообщений: 17
10.05.2023, 21:09  [ТС] 3
Спасибо, сделал, но мозг после отключился, как вывести элемент который удаляем?
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
#include <iostream>
#include <list>
#include <math.h>
 
using namespace std;
 
int main() {
 
    setlocale(LC_ALL, "rus");
 
    list<int>lst = { 1, 2, 3, 4, 5 };
    list<int>::iterator pos_it;
    list<int>::iterator it;
 
    cout << "Количество элементов: " << lst.size() << endl << endl;
 
    cout << "Список до изменения: ";
    for (it = lst.begin(); it != lst.end(); ++it) {
        cout << *it << " ";
 
    }
    cout << endl << endl;
      
    cout << "Удаление чётных элементов: ";
    
    for (pos_it = lst.begin(); pos_it != lst.end();) {
        if (*pos_it % 2 == 0) pos_it = lst.erase(pos_it);
        else ++pos_it;
    }
 
    cout << "Список после изменения: ";
    for (auto it = lst.cbegin(); it != lst.cend(); ++it)
        cout << *it << " ";
    cout << endl << endl;
 
    
    return 0;
}
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
10.05.2023, 21:13 4
Ну добавь в 27-ю вывод перед erase.
1
0 / 0 / 0
Регистрация: 09.10.2022
Сообщений: 17
10.05.2023, 21:19  [ТС] 5
Пасибки
0
10.05.2023, 21:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2023, 21:19
Помогаю со студенческими работами здесь

Очередь из двунаправленного списка
Вот мой двусвязный список : struct Num { int number; bool ring; Num *next, *prev; };...

Очистка двунаправленного списка
Есть двунаправленный линейный список. Помогите пожалуйста с функцией очистки всего списка. код: ...

Реализация Двунаправленного списка
Ребят, что он хочет от меня, ошибка компиляции, понять не могу в чем проблема, у меня еще просто...

Шаблон двунаправленного списка
Добрый день! Пишу программу &quot;библиотека&quot;, которая включает в себя типы данных Книга и Читатель...

Удаление элементов из односвязного списка списка
Привет всем знатокам, суровым программистам и профессионалам своего дела. Засел за реализацией...

Проблема с деструктором двунаправленного списка
Привет всем! В моей лабораторной работе требуется реализовать структуру данных &quot;строка&quot; в виде...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru