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

Разработать шаблонный класс Deque c разными методами

16.07.2018, 09:48. Показов 1699. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Разработать шаблонный класс Deque, который имеет следующие методы:

- addBegin(n) - добавление в начало дека
- addEnd(n) - добавление в конец дека
- T outBegin() - взять элемент из начала, элемент удаляется
- T outEnd() - взять элемент из конца, элемент удаляется
- print() - печать на экран
- getCount() - получить количество элементов
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2018, 09:48
Ответы с готовыми решениями:

Разработать шаблонный класс Deque, который имеет следующие методы:
- addBegin(n) - добавление в начало дека - addEnd(n) - добавление в конец дека - T outBegin() -...

Шаблонный класс для работы с разными типами данных и объявление методов в main
есть класс шаблонный, но не могу объявить методы в main и сделать длядругих типов :(когда делала...

Разработать шаблонный класс Stack
На С++ разработать шаблонный класс Stack (стек)для представления одномерных динамических массивов....

Разработать шаблонный класс Array
1. Разработать шаблонный класс Array для работы с массивами. Реализовать методы ввода и вывода, а...

2
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
16.07.2018, 09:58 2
Разработать шаблонный класс Deque, который имеет следующие методы:
0
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
17.07.2018, 12:54 3
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
149
150
151
152
153
#include <iostream>
#include <string>
 
template<class T>
class Deque {
    struct node {
        node* prev, *next;
        T     val;
        node(void) noexcept : prev(nullptr), next(nullptr){}
        node(const T& v): prev(nullptr), next(nullptr), val(v){}
    };
private:
    node* hd, *tl;
public:
    Deque(void) noexcept : hd(nullptr), tl(nullptr){}
    ~Deque(){ Clear(); }
 
    Deque(const Deque&) = delete;
    Deque& operator = (const Deque&) = delete;
public:
    //вставка в начало
    void addBegin(const T& v){ add_beg(new node(v)); }
 
    void addBegin(T&& v){
        node* p = new node();
        p->val  = std::forward<T>(v);
        add_beg(p);
    }
 
    //вставка в конец
    void addEnd(const T& v){ add_end(new node(v)); }
 
    void addEnd(T&& v){
        node* p = new node();
        p->val  = std::forward<T>(v);
        add_end(p);
    }
 
    //удалить первый
    T outBegin(void){
        T v = hd->val;
        pop_beg();
        return v;
    }
 
    void popBegin(void){ pop_beg(); }
 
    //удалить последний
    T outEnd(void){
        T v = tl->val;
        pop_end();
        return v;
    }
 
    void popEnd(void){ pop_end(); }
 
    //удаление всех
    void Clear(void){
        node* p;
        while(hd != nullptr){
            p  = hd;
            hd = hd->next;
            delete p;
        }
        tl = nullptr;
    }
 
    //кол-во
    size_t getCount(void) const noexcept {
        size_t i = 0;
        for(const node* p = hd; p != nullptr; p = p->next)
            ++i;
        return i;
    }
 
    T& Begin(void){ return hd->val; }
    const T& Begin(void) const { return hd->val; }
 
    T& End(void) { return tl->val; }
    const T& End(void) const { return tl->val; }
 
    bool isEmpty(void) const noexcept { return (hd == nullptr); }
private:
    void add_beg(node* p) noexcept {
        if(hd == nullptr)
            hd = tl = p;
        else {
            hd->prev = p;
            p->next  = hd;
            hd = p;
        }
    }
 
    void add_end(node* p) noexcept {
        if(hd == nullptr)
            hd = tl = p;
        else {
            p->prev  = tl;
            tl->next = p;
            tl = p;
        }
    }
 
    void pop_beg(void){
        node* p = hd;
        if((hd = hd->next) != nullptr)
            hd->prev = nullptr;
        else
            tl = nullptr;
        delete p;
    }
 
    void pop_end(void){
        node* p = tl;
        if((tl = tl->prev) != nullptr)
            tl->next = nullptr;
        else
            hd = nullptr;
        delete p;
    }
};
 
int main(void){
    Deque<int> di;
    for(int i = 0; i < 10; ++i){
        di.addBegin(i);
        di.addEnd(i);
    }
 
    while(!di.isEmpty())
        std::cout << di.outBegin() << ' ';
    std::cout << std::endl;
 
    //...
 
    Deque<std::string> ds;
    ds.addBegin("ALGOL");
    ds.addBegin("PASCAL");
 
    std::string s1("JAVA2");
    ds.addBegin(std::move(s1));
 
    std::string s2 = "FORTRAN";
    ds.addEnd(std::move(s2));
    ds.addEnd("PYTHON");
 
    while(!ds.isEmpty()){
        std::cout << ds.End() << std::endl;
        ds.popEnd();
    }
    std::cin.get();
    return 0;
}
0
17.07.2018, 12:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.07.2018, 12:54
Помогаю со студенческими работами здесь

Необходимо разработать шаблонный класс для создания и обработки массива
Класс должен содержать все методы, в которые фактический тип данных передается как параметр при...

Разработать шаблонный класс для нахождения локальных максимумов и минимумов в массиве
Помогите пожалуйста. Необходимо найти количество абсолютных и локальных минимумов и максимумов...

Разработать шаблонный класс для представления вектора из четырех элементов заданного типа
Помогите пожалуйста, может у кого есть готовый рабочий код? Требуется разработать шаблонный класс...

Разработать класс для подключения к БД с методами
разработать класс для подключения к БД, включающий следующие методы: 1. метод подключения к...


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

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