Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 18.06.2017
Сообщений: 11
1

Создать базовый класс список и реализовать на его основе стек и очередь

03.07.2017, 10:35. Показов 3752. Ответов 1
Метки нет (Все метки)

2. Создать базовый класс список. Реализовать на базе списка стек и очередь с
виртуальными функциями вставки и вытаскивания.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.07.2017, 10:35
Ответы с готовыми решениями:

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

На основе двух экземпляров объектов класса стек (Stack) реализовать класс очередь (Queue)
5. На основі двох екземплярів об’єктів класу стек (Stack) реалізувати клас черга (Queue). ...

Создать абстрактный класс Vehicle. На его основе реализовать классы:
Создать абстрактный класс Vehicle. На его основе реализовать классы Car (автомобиль), Bicycle...

Создать абстрактный класс Pair, на его основе реализовать классы Money и Complex-С++
Создать абстрактный класс Pair (пара значений) с виртуальными методами, реализующими арифметические...

1
824 / 627 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
03.07.2017, 17:20 2
Лучший ответ Сообщение было отмечено ogurezz как решение

Решение

ogurezz, вот написал по быстрому.
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>
 
//двусвязной список
template<typename T>
class tlist {
    struct node {
        node* prev;
        node* next;
        T     val;
        node(const T& v):prev(NULL), next(NULL), val(v){}
    };
private:
    node*  head, *tail;
    size_t cnt;
public:
    tlist(void):head(NULL), tail(NULL), cnt(0){}
    ~tlist(){ clear(); }
public:
    virtual void push(const T& val) = 0;
    virtual void pop(void) = 0;
protected:
 
    void push_front(const T& val){
        node* p = new node(val);
        if(head == NULL)
            head = tail = p;
        else {
            head->prev = p;
            p->next = head;
            head = p;
        }
        ++cnt;
    }
 
    void push_back(const T& val){
        node* p = new node(val);
        if(head == NULL)
            head = tail = p;
        else {
            p->prev = tail;
            tail = tail->next = p;
        }
        ++cnt;
    }
 
    void pop_front(void){
        node* t;
        if(head != NULL){
            t = head;
            head = head->next;
            delete t;
            if(head != NULL)
                head->prev = NULL;
            else
                tail = NULL;
            --cnt;
        }
    }
 
    void pop_back(void){
        node* t;
        if(tail != NULL){
            t = tail;
            tail = tail->prev;
            delete t;
            if(tail != NULL)
                tail->next = NULL;
            else
                head = NULL;
            --cnt;
        }
    }
public:
    void clear(void){
        while(head != NULL)
            pop_front();
        cnt = 0;
    }
 
    bool empty(void)  const { return (head == NULL); }
    size_t size(void) const { return cnt; }
 
    const T& peek(void) const { return head->val; }
    T& peek(void) { return head->val; }
};
 
//стек(LIFO)
template<typename T>
class tstack: public tlist<T> {
public:
    virtual void push(const T& val){ tlist<T>::push_front(val); }
    virtual void pop(void){ tlist<T>::pop_front(); }
};
 
//очередь(FIFO)
template<typename T>
class tqueue: public tlist<T> {
public:
    virtual void push(const T& val){ tlist<T>::push_back(val); }
    virtual void pop(void){ tlist<T>::pop_front(); }
};
 
int main(void){
    tstack<char> s;
    for(char c = 'A'; c <= 'Z'; ++c)
        s.push(c);
    for(; !s.empty(); s.pop())
        std::cout << s.peek();
    std::cout << std::endl;
 
    //...
 
    tqueue<int> q;
    for(int i = 0; i < 10; ++i)
        q.push(i);
    for(; !q.empty(); q.pop())
        std::cout << q.peek() << ' ';
    std::cin.get();
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.07.2017, 17:20

Создать абстрактный класс Body. На его основе реализовать классы Parallelepiped, Cone и Ball
Помогите, если можете. Вторую неделю колупаюсь. Создать абстрактный класс Body. На его основе...

Создать базовый класс "список" с виртуальными функциями вставки и извлечения. Реализовать на базе списка произ
Создать базовый класс &quot;список&quot; с виртуальными функциями вставки и извлечения. Реализовать на базе...

Определить базовый класс и на его основе производные классы
Разработать консольную программу на языке С++, в которой необходимо определить базовый класс и на...

Реализовать класс "Река" и список на его основе
Реализовать класс река. Полся - название, годовой сток, протяженность. Реализовать перечисляемые...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.