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

Сортировка deque

05.05.2019, 21:26. Показов 2400. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер! Я реализовал свой класс deque. Возникло несколько вопросов...
1) Возможно ли как-то сделать, чтобы в деке были числа и слова?(нужно по заданию)
2) Как реализовать сортировку дека в классе наследнике?(нужно по заданию)
3) Возможно ли выводить весь дек, а не по первому и последнему элементу?
В stl это все как-то легче, помогите разобраться, пожалуйста.
Вот мой код:
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <iostream>
 
using namespace std;
 
const int N = 10; //размер дека
 
template<typename T>
class Deque
{
private:
    T data[N]; //массив данных
    T *last;    //указатель на конец
public:
    void CreateDeque(Deque *deq) //создание дека
    {
        deq->last = 0;
    }
 
    bool EmptyDeque(Deque *deq) //проверка дека на пустоту
    {
        if (deq->last == 0) return true;
        else return false;
    }
 
    void AddLeft(Deque *deq) //добавление элемента в начало
    {
        if (deq->last == N)
        {
            cout << "\nДек заполнен\n\n"; return;
        }
        int value;
        cout << "\nЗначение > "; cin >> value;
        for (int i = deq->last; i > 0; i--)
            deq->data[i] = deq->data[i - 1];
        deq->data[0] = value;
        deq->last++;
        cout << endl << "Элемент добавлен\n\n";
    }
 
    void AddRight(Deque *deq) //добавление элемента в конец
    {
        if (deq->last == N)
        {
            cout << "\nДек заполнен\n\n"; return;
        }
        int value;
        cout << "\nЗначение > "; cin >> value;
        deq->data[deq->last++] = value;
        cout << endl << "Элемент добавлен\n\n";
    }
 
    void DeleteLeft(Deque *deq) //удаление первого элемента
    {
        for (int i = 0; i < deq->last; i++) //смещение элементов
            deq->data[i] = deq->data[i + 1]; deq->last--;
    }
 
    void DeleteRight(Deque *deq) //удаление последнего элемента
    {
        deq->last--;
    }
 
    int OutputLeft(Deque *deq) //вывод первого элемента
    {
        return deq->data[0];
    }
 
    int OutputRight(Deque *deq) //вывод последнего элемента
    {
        return deq->data[deq->last - 1];
    }
 
    int DequeSize(Deque *deq) //размер дека
    {
        return deq->last;
    }
};
 
template<typename T>
class SortDeque : public Deque<T>
{
 
};
 
//******************************************
int main() //главная функция
{
    setlocale(LC_ALL, "Rus");
    Deque<int> deq;
    deq.CreateDeque(&deq);
    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': deq.AddLeft(&deq);
            break;
            //-----------------------------------------------
        case '2': deq.AddRight(&deq);
            break;
            //-----------------------------------------------
        case '3':
            if (deq.EmptyDeque(&deq)) cout << endl << "Дек пуст\n\n";
            else
            {
                deq.DeleteLeft(&deq);
                cout << endl << "Элемент удален из дека\n\n";
            } break;
            //-----------------------------------------------
        case '4':
            if (deq.EmptyDeque(&deq)) cout << endl << "Дек пуст\n\n";
            else
            {
                deq.DeleteRight(&deq);
                cout << endl << "Элемент удален\n\n";
            } break;
            //-----------------------------------------------
        case '5':
            if (deq.EmptyDeque(&deq)) cout << endl << "Дек пуст\n\n";
            else cout << "\nПервый элемент: " << deq.OutputLeft(&deq) << "\n\n";
            break;
            //-----------------------------------------------
        case '6':
            if (deq.EmptyDeque(&deq)) cout << endl << "Дек пуст\n\n";
            else cout << "\nПоследний элемент: " << deq.OutputRight(&deq) << "\n\n";
            break;
            //-----------------------------------------------
        case '7':
            if (deq.EmptyDeque(&deq)) cout << endl << "Дек пуст\n\n";
            else cout << "\nРазмер дека: " << deq.DequeSize(&deq) << "\n\n";
            break;
            //-----------------------------------------------
        case '0': break;
        default: cout << endl << "Команда не определена\n\n";
            break;
        }
    } while (number != '0');
    system("pause");
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.05.2019, 21:26
Ответы с готовыми решениями:

Compair deque
есть два списка. Теперь мне нужно сравнить элементы если х &lt;у то return (x+y) . я так думаю надо результат в 3 список записать как мне...

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

std::deque
Как известно при добавлении в конец вектора элементов(и не только в конец) может возникнуть перераспределение памяти что переместит данные...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2019, 21:26
Помогаю со студенческими работами здесь

deque<float>
Создать контейнер deque и заполнить его типом данных &lt;float&gt;, вывести на экран. Удалив одни элементы и заменив другие вывести на экран...

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

STL, deque, pair
Здравствуйте, помогите пожалуйста разобраться. Есть такая очередь: deque&lt;pair&lt;int, timeval&gt; &gt; last_query Как...

Контейнер deque <pair>
Есть контейнер deque&lt;pair&lt;int, int&gt;&gt; dq; Делаю вставку dq.push_back(make_pair(100, 100)); dq.push_back(make_pair(80, 80)); ...

Объединение контейнеров deque
Есть два отсортированных dequе ,нужно запихнуть их в 1 результирующий.Подскажите как это сделать.


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru