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

Создать двусвязный список, содержащий целые числа. Удалить все максимальные элементы

19.05.2017, 23:17. Показов 4562. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создать двусвязный список, содержащий целые числа. Удалить все максималь*
ные элементы. Например, для списка 5 2 9 1 3 7 9 2 9, результат должен быть 5 2 1 3 7 2.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2017, 23:17
Ответы с готовыми решениями:

Организовать динамический список, содержащий целые числа. Удалить из списка все нулевые элементы
Организовать динамический список, содержащий целые числа. Удалить из списка все нулевые элементы,...

Дан одномерный массив, содержащий целые числа. Использовать доп массивы нельзя. Удалить все элементы, кратные X
#include <iostream> #include <math.h> using namespace std; int main() { setlocale(LC_ALL,...

Дан текстовый файл, содержащий целые числа. Удалить из него все четные числа
Только начал изучать эту тему. Не знаю как решить , помогите пожалуйста. with open("task_1.txt",...

В одномерном массиве, элементы которого - целые числа, удалить все четные числа
В одномерном массиве, элементы которого - целые числа, удалить все четные числа именно удалить а...

1
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
20.05.2017, 10:34 2
Лучший ответ Сообщение было отмечено woid177 как решение

Решение

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
#include <iostream>
 
struct node {
    node* next;
    node* prev;
    int   val;
    node(int v):next(NULL), prev(NULL), val(v){}
};
 
typedef struct {
    node* head;
    node* tail;
} list_t;
 
void  list_init(list_t* lst){ lst->head = lst->tail = NULL; }
void  list_add_front(list_t* lst, int val);
void  list_add_back(list_t* lst, int val);
void  list_clear(list_t* lst);
node* list_erase(list_t* lst, node* p);
 
 
int main(void){
    int a[] = { 5, 2, 9, 1, 3, 7, 9, 2, 9 };
 
    list_t lst;
    list_init(&lst);
    for(unsigned i = 0; i < sizeof(a)/sizeof(a[0]); ++i)
        list_add_back(&lst, a[i]);
 
    //найти макс
    int _max = (lst.head != NULL) ? lst.head->val : 0;
    for(const node* p = lst.head; p != NULL; p = p->next){
        if(p->val > _max)
            _max = p->val;
    }
 
    //удалить макс
    node* it = lst.head; 
    while(it != NULL){
        if(it->val == _max)
            it = list_erase(&lst, it);
        else
            it = it->next;
    }
 
    //вывод вперёд
    for(const node* p1 = lst.head; p1 != NULL; p1 = p1->next)
        std::cout << p1->val << ' ';
    std::cout << std::endl;
 
    //вывод назад
    for(const node* p2 = lst.tail; p2 != NULL; p2 = p2->prev)
        std::cout << p2->val << ' ';
    std::cout << std::endl;
 
    list_clear(&lst);
    std::cin.get();
    return 0;
}
 
//вставка в начало
void list_add_front(list_t* lst, int val){
    node* p = new node(val);
    if(lst->head == NULL)
        lst->head = lst->tail = p;
    else {
        p->next = lst->head;
        lst->head->prev = p;
        lst->head = p;
    }
}
 
//вставка в конец
void list_add_back(list_t* lst, int val){
    node* p = new node(val);
    if(lst->head == NULL)
        lst->head = lst->tail = p;
    else {
        p->prev = lst->tail;
        lst->tail->next = p;
        lst->tail = p;
    }
}
 
//удалить всё
void list_clear(list_t* lst){
    node* tmp;
    while(lst->head != NULL){
        tmp = lst->head;
        lst->head = lst->head->next;
        delete tmp;
    }
    lst->tail = NULL;
}
 
//удаление
node* list_erase(list_t* lst, node* p){
    node* next = p->next;
    if(lst->head == p){
        lst->head = lst->head->next;
        if(lst->head != NULL)
            lst->head->prev = NULL;
        else
            lst->tail = NULL;
    } else if(lst->tail == p){
        lst->tail = lst->tail->prev;
        lst->tail->next = NULL;
    } else {
        p->prev->next = p->next;
        p->next->prev = p->prev;
    }
    delete p;
    return next;
}
0
20.05.2017, 10:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2017, 10:34
Помогаю со студенческими работами здесь

В одномерном массиве, элементы которого -целые числа, удалить все четные числа
В одномерном массиве, элементы которого -целые числа, удалить все четные числа.

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

Создать односвязный кольцевой линейный список элементы которого целые числа
Создать односвязный кольцевой линейный список элементы которого целые числа. Удалить каждый 3...

Удалить из бинарного файла, в котором записаны целые числа все четные элементы.
Решите очень нужно. Удалить из бинарного файла, в котором записаны целые числа все четные ...


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

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