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

Как двунаправленный дек превратить в стек?

10.04.2022, 11:45. Показов 485. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот код, я не понимаю как чтоб двунаправленный дек превратить в стек


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
#include <iostream>
using namespace std;
const int N = 5; //размер дека
struct Deque
{
    int data[N]; //массив данных
    int last; //указатель на конец
};
void Creation(Deque* D) //создание дека
{
    D->last = 0;
}
bool Full(Deque* D) //проверка дека на пустоту
{
    if (D->last == 0) return true;
    else return false;
}
void AddL(Deque* D) //добавление элемента в начало
{
    if (D->last == N)
    {
        cout << "\nДек заполнен\n\n"; return;
    }
    int value;
    cout << "\nЗначение > "; cin >> value;
    for (int i = D->last; i > 0; i--)
        D->data[i] = D->data[i - 1];
    D->data[0] = value;
    D->last++;
    cout << endl << "Элемент добавлен\n\n";
}
void AddR(Deque* D) //добавление элемента в конец
{
    if (D->last == N)
    {
        cout << "\nДек заполнен\n\n"; return;
    }
    int value;
    cout << "\nЗначение > "; cin >> value;
    D->data[D->last++] = value;
    cout << endl << "Элемент добавлен\n\n";
}
void DeleteL(Deque* D) //удаление первого элемента
{
    for (int i = 0; i < D->last; i++) //смещение элементов
        D->data[i] = D->data[i + 1]; D->last--;
}
void DeleteR(Deque* D) //удаление последнего элемента
{
    D->last--;
}
int OutputL(Deque* D) //вывод первого элемента
{
    return D->data[0];
}
int OutputR(Deque* D) //вывод последнего элемента
{
    return D->data[D->last - 1];
}
int Size(Deque* D) //размер дека
{
    return D->last;
}
//******************************************
int main() //главная функция
{
    setlocale(LC_ALL, "Rus");
    Deque D;
    Creation(&D);
    char number;
    do
    {
        cout << "1. Добавить элемент в начало" << endl;
        cout << "2. Добавить элемент в конец" << endl;
        cout << "3. Удалить первый элемент" << endl;
        cout << "4. Удалить последний элемент" << endl;
        cout << "5. Вывести первый элемент" << endl;
        cout << "6. Вывести последний элемент" << endl;
        cout << "7. Узнать размер дека" << endl;
        cout << "0. Выйти\n\n";
        cout << "Номер команды > "; cin >> number;
        switch (number)
        {
        case '1': AddL(&D);
            break;
            //-----------------------------------------------
        case '2': AddR(&D);
            break;
            //-----------------------------------------------
        case '3':
            if (Full(&D)) cout << endl << "Дек пуст\n\n";
            else
            {
                DeleteL(&D);
                cout << endl << "Элемент удален из дека\n\n";
            } break;
            //-----------------------------------------------
        case '4':
            if (Full(&D)) cout << endl << "Дек пуст\n\n";
            else
            {
                DeleteR(&D);
                cout << endl << "Элемент удален\n\n";
            } break;
            //-----------------------------------------------
        case '5':
            if (Full(&D)) cout << endl << "Дек пуст\n\n";
            else cout << "\nПервый элемент: " << OutputL(&D) << "\n\n";
            break;
            //-----------------------------------------------
        case '6':
            if (Full(&D)) cout << endl << "Дек пуст\n\n";
            else cout << "\nПоследний элемент: " << OutputR(&D) << "\n\n";
            break;
            //-----------------------------------------------
        case '7':
            if (Full(&D)) cout << endl << "Дек пуст\n\n";
            else cout << "\nРазмер дека: " << Size(&D) << "\n\n";
            break;
            //-----------------------------------------------
        case '0': break;
        default: cout << endl << "Команда не определена\n\n";
            break;
        }
    } while (number != '0');
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2022, 11:45
Ответы с готовыми решениями:

Как из двунаправленного дек превратить в стек?
Вот код, я не понимаю как чтоб двунаправленный дек превратить в стек #include &lt;iostream&gt;...

Стек и дек: Почему стек есть, с ним я могу работать, а дек я должен сам описывать?
Где взять этот дек? Почему я не могу в C# найти его и обратиться к нему? Почему стек есть, с ним я...

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

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

0
10.04.2022, 11:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2022, 11:45
Помогаю со студенческими работами здесь

Двунаправленный список (дек). Удалить все отрицательные элементы
Составить программу, создающую двунаправленный список (дек) D и выводящую его после некоторой...

Создать двунаправленный список (дек). Найти среднее арифметическое списка
. D - список действительных чисел. Найти среднее арифметическое списка, добавить его в качестве...

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

Как можно объединить в одну структуру стек (очередь) и дек, при этом не создавая 2 структуры?
Доброго всем вечера! У меня возник вопрос такой)) Как я могу объединить в одну структуру...

Двунаправленный список (дек). После каждого отрицательного элемента добавить его модуль
Составить программу, создающую двунаправленный список (дек) D и выводящую его после некоторой...

стек и дек
Разработать программу, с помощью которой можно определить наибольший допустимый размер дека с...

Стек/дек на C!
Создать дек для символов. Максимальный размер дека вводится с экрана. Создать функции для ввода и...


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

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

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