0 / 0 / 0
Регистрация: 24.03.2020
Сообщений: 5
1

Удаление всех четных элементов из двусвязного списка c++

24.03.2020, 17:28. Показов 189. Ответов 0
Метки нет (Все метки)

Не могу понять почему не работает функция удаления четных элементов, буду благодарен если объясните!
C++ (Qt)
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
#include <iostream>
using namespace std;
struct Spis
{
    int info;
    Spis* next;
    Spis* prev;
}*b, *e;
int main()
{
    int kol=1;
    Spis* t = NULL;
    int choice;
    setlocale(LC_ALL, "russian");
    while (true)
    {
        cout << "----------------------------------------МЕНЮ----------------------------------------" << endl;
        cout << "\t1 - Создание\n\t2 - Добавление элементов\n\t3 - Вывод на экран\n\n\tВыберите действие: "; cin >> choice;
        switch (choice)
        {
        case 1: {
        t = new Spis;
        system("cls");
            cout << "Введите первый элемент: "; cin >> t->info;
            t->prev = t->next = NULL;
            b = e = t; } break;
        case 2: {
            int choice1;
            system("cls");
            cout << "----------------------------------------ДОБАВЛЕНИЕ ЭЛЕМЕНТА----------------------------------------" << endl;
            cout << "\t1 - добавление в конец\n\t2 - добавление в начало\n\n\tВаш выбор: "; cin >> choice1;
            if (choice1 == 1)
            {
                 t = new Spis;
                 cout << "\tВведите элемент: ";
                cin >> t->info;
                t->next = NULL;
                t->prev = e;
                e->next = t;
                e = t;
                kol++;
            }
            else
            {
                 t = new Spis;
                 cout << "\tВведите элемент: ";
                cin >> t->info;
                t->next = b;
                t->prev = NULL;
                b->prev = t;
                b = t;
                kol++;
            }
        }break;
        case 3: {
            int choice2;
            cout << "----------------------------------------ВЫВОД СПИСКА----------------------------------------" << endl;
            cout << "\t1 - Вывод с начала\n\t2 - Вывод с конца\n\n\tВаш выбор: "; cin >> choice2;
            cout << "\tВаш список: ";
            if (choice2 == 1)
            {
                t = b;
                while (t != NULL)
                {
                    cout << t->info << " ";
                    t = t->next;
                }
            }
            else
            {
                t = e;
                while (t != NULL)
                {
                    cout << t->info << " ";
                    t = t->prev;
                }
            }
            cout << endl;
            cout << "Количество элементов: " << kol << endl;
        }break;
        case 4: 
        {
            Spis* key = NULL;
            t = b;
                while (t != NULL)
                {
                    if ((t->info) % 2 == 0)
                    {
                        key = t;
                        if (key == b)
                        {
                            b = b->next;
                            b->prev = NULL;
                            free(key);
                            t = t->next;
                        }
                        else if (key == e)
                        {
                            e = e->prev;
                            e->next = NULL;
                            free(key);
                            t = t->next;
                        }
                        else
                        {
                            (key->prev)->next = key->next;
                            (key->next)->prev = key->prev;
                            free(key);
                            t = t->next;
                        }
 
                    }
                    else
                        t = t->next;
                }
                if (key == NULL)
                {
                    cout << "Error" << endl;
                    return 0;
                }
                free(key);
        }break;
        }
    }
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2020, 17:28
Ответы с готовыми решениями:

Функция удаления чётных элементов двусвязного списка
bool delete_even(circle_list *&amp;list) {circle_list *curr=list, *first=list; *temp=NULL; if...

Написать функцию удаления четных элементов двусвязного списка
я тут что-то набросал, но это бред похоже.подправьте или переправьте :umbrage: кому не сложно....

Добавление и удаление элементов из двусвязного списка
Разбираю списки. Посмотрите код правильно ли я все понимаю?))) путаюсь с указателями. может можно...

Удаление элементов, кратных 5, из двусвязного списка
У меня есть функция рандомных елементов списка, и мне нужно удалить елементы кратные пяти, ну и...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2020, 17:28

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

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

Удаление элемента из двусвязного списка
Доброго всем времени суток. Нужна помощь. Есть двусвязный список. Функции передаем какое то...

Удаление элемента из двусвязного списка
Надо удалить элемент из двусвязного списка, если выполняется условие (2013-(current-&gt;god)&lt;3). Я...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru