Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
2 / 2 / 0
Регистрация: 17.06.2020
Сообщений: 43

Deque C++ функция pop_back

17.06.2020, 13:12. Показов 1995. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я написала код:

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
struct deQ {
int inf;
deQ* next, * prev;
};
 
deQ* head, * end;
 
deQ* push_front(deQ*& first, deQ*& last, int k) // -
{
deQ* q = new deQ;
q->inf = k;
q->next = first;
return q;
}
 
void push_back(deQ*& first, deQ*& last, int k)
{
deQ* q = new deQ;
q->inf = k;
q->next = 0;
if (!last) { first = last = q; }
else { last->next = q; last = q; }
}
 
int pop_front(deQ*& first, deQ*& last)
{
int rez = first->inf;
if (first == last) {
delete first;
first = last = 0;
return rez;
}
deQ* q = first;
first = first->next;
delete q;
return rez;
}
+ кусочек в мейне:
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
deQ* hd, * tl;
    hd = tl = 0;
        ...
       case 7: {///7. Добавление элемента в начало дека
            cout << "Введите число элементов" << endl;
            cin >> t;
            cout << "Введите элементы" << endl;
            for (int i = 0; i < t; i++) {
                cin >> k;
                push_front(hd, tl, k);
            } break; }
        case 8: {///8. Извлечение элемента из начала дека
            while (first)
                cout << pop_front(hd, tl) << endl;
            cout << "Дек пуст!" << endl; break; }
        case 9: {///9. Добавление элемента в конец дека
            cout << "Введите число элементов" << endl;
            cin >> t;
            cout << "Введите элементы" << endl;
            for (int i = 0; i < t; i++) {
                cin >> k;
                push_back(hd, tl, k);
            } break; }
        case 10: {///10. Извлечение элемента из конца дека
            /*pop_back;*/ break; }
Мне необходимо мнение об этом коде + функция void pop_back(deQ*& first, deQ*& last)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.06.2020, 13:12
Ответы с готовыми решениями:

Ошибки в push_back и pop_back
Задали финальный проект на Linked List, но тему эту по сути не очень хорошо успела освоить. Знаю что есть несколько ошибок в push_back и...

stl::vector, метод pop_back()
Доброго времени суток! Вот такой вопрос: я создаю объект в куче: someClass *test = new someClass();

Не получается использовать .pop_back
У меня такой вопросец. не получается использовать .pop_back(). Код кнопки: System::String^ chislo_1; //Так переменная объявлена ...

1
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
17.06.2020, 14:27
Лучший ответ Сообщение было отмечено Элани как решение

Решение

Элани, подправил Ваш код. Вы совершенно забыли про поле prev
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
#include <iostream>
using namespace std;
 
struct deQ {
    int inf;
    deQ *next, *prev;
};
 
void push_front(deQ*& first, deQ*& last, int k)
{
    deQ* q = new deQ;
    q->inf = k;
    q->prev = nullptr;
    q->next = first;
    if (!first)
        last = q;
    else
        first->prev = q;
    first = q;
}
 
void push_back(deQ*& first, deQ*& last, int k)
{
    deQ* q = new deQ;
    q->inf = k;
    q->next = nullptr;
    q->prev = last;
    if (!last)
        first = q; 
    else
        last->next = q;
    last = q;
}
 
int pop_front(deQ*& first, deQ*& last)
{
    int rez = -1;
 
    if (first)
    {
        rez = first->inf;
        deQ* q = first->next;
        if (q)
        {
            delete first;
            q->prev = nullptr;
            first = q;
        }
        else
        {
            delete first;
            first = last = nullptr;
        }
    }
    return rez;
}
 
int pop_back(deQ*& first, deQ*& last)
{
    int rez = -1;
 
    if (last)
    {
        rez = last->inf;
        deQ* q = last->prev;
        if (q)
        {
            delete last;
            q->next = nullptr;
            last = q;
        }
        else
        {
            delete last;
            first = last = nullptr;
        }
    }
    return rez;
}
 
deQ *hd = nullptr, *tl = nullptr;
 
int main()
{
    int t, k;
 
    setlocale(LC_ALL, "Rus");
 
    // Добавление элемента в начало дека
    cout << "Введите число элементов: ";
    cin >> t;
    cout << "Введите элементы:" << endl;
    for (int i = 0; i < t; i++)
    {
        cin >> k;
        push_front(hd, tl, k);
    }
 
    // Извлечение элемента из начала дека
    cout << "Элементы дека, извлеченные с головы:" << endl;
    while (hd)
        cout << pop_front(hd, tl) << endl;
    cout << "Дек пуст!" << endl;
 
    // Добавление элемента в конец дека
    cout << "Введите число элементов: ";
    cin >> t;
    cout << "Введите элементы:" << endl;
    for (int i = 0; i < t; i++)
    {
        cin >> k;
        push_back(hd, tl, k);
    }
 
    // Извлечение элемента из конца дека
    cout << "Элементы дека, извлеченные с хвоста:" << endl;
    while (tl)
        cout << pop_back(hd, tl) << endl;
    cout << "Дек пуст!" << endl;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2020, 14:27
Помогаю со студенческими работами здесь

Нужен функционал push_back и pop_back в паскале
Здравствуйте, я переписываю программу с С++ на паскаль. У меня вот такая функция есть: void performOp(std::vector&lt;int32_t&gt;...

Отличие erase() и pop_back() при работе с std::vector
При использовании функций ersae() и pop_back() происходит различие по времени исполнения операции. Как устроены и асимптотически отличаются...

QString - удаление последнего элемента. Неужели нет аналога std::string pop_back ?
я нуб :)

STL deque
Устройство, основные операции и их стоимость, особенности использования deque. Ни где не могу найти стоимость выполнения основных...

Контейнер deque
Задание:(используя контейнер deque) ввести последовательность натуральных чисел,у конце которой 0.Не сохраняя всей последовательности в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru