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

Создать класс Lqueue – структура типа "очередь" базируется на структуре связного списка

15.02.2022, 23:18. Показов 535. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создать класс Lqueue – структура типа "очередь"
базируется на структуре связного списка. Тип значения элементов
очереди – int.. Предусмотреть функции для выполнения следующих операций:

аdd() – занести значение в конец очереди;
pop() – добыть и удалить значение с начала очереди;
print() – вывести все значения очереди на экран;
num() – найти количество значений, находящихся в очереди;
isempty() – вернуть значение true (тип bool), если очередь пуста.
Указания: предусмотреть обработку исключительной ситуации: добыча
значение из пустой очереди.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2022, 23:18
Ответы с готовыми решениями:

класс Lqueue, структура типа "очередь"
Создать класс Lqueue - структура типа "очередь", что базируется на структуре связного списка. Тип...

Создать класс - структура типа очередь, основанный на массиве указателей фиксированного размера
Можете помочь, пожалуйста, что не правильно, что ну нужно подправить:) Создать класс Aqueue -...

Создать класс Aqueue - структура типа очередь, основанный на массиве указателей фиксированного размера
Создать класс Aqueue - структура типа очередь, основанный на массиве указателей фиксированного...

Создать шаблонный класс - упорядоченный стек на основе связного списка в динамической памяти
Создать шаблонный класс - упорядоченный стек на основе связного списка в динамической памяти. Тип...

1
4792 / 2598 / 898
Регистрация: 29.11.2010
Сообщений: 5,627
16.02.2022, 00:12 2
Лучший ответ Сообщение было отмечено Samorodin как решение

Решение

Цитата Сообщение от Samorodin Посмотреть сообщение
Создать класс Lqueue
Рука промахнулась мимо двоеточия в латинскую L? Должно было быть "Создать класс: Queue ...".

Цитата Сообщение от Samorodin Посмотреть сообщение
базируется на структуре связного списка
Я не понял что это значит. Нужно создать структуру связного списка, а потом сделать класс очереди унаследованный или аггрегирующий эту структуру? Надеюсь, что это просто бюрократическое косноязычие. Сделал одним классом.

Некоторые функции назвал чуть получше.
print -- вместо функции сделал дружественный оператор вывода в поток -- так удобнее;
num -- getSize;

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
#include <iostream>
#include <stdexcept>
 
template<typename T>
class Queue {
public:
    Queue() noexcept: base(), size(0) {}
 
    Queue(const Queue<T> &o) noexcept: base(), size(0) {
        for (NodeBase *i = o.base.next; i != &o.base; i = i->next) {
            add(static_cast<Node *>(i)->value);
        }
    }
 
    Queue<T> &operator=(const Queue<T> &o) noexcept {
        if (this != &o) {
            clear();
            for (NodeBase *i = o.base.next; i != &o.base; i = i->next) {
                add(static_cast<Node *>(i)->value);
            }
        }
        return *this;
    }
 
    ~Queue() noexcept {
        clear();
    }
 
    void clear() {
        while (!isEmpty()) {
            delete base.next;
        }
    }
 
 
    void add(const T &value) {
        new Node(base.prev, value);
        ++size;
    }
 
    std::size_t getSize() const {
        return size;
    }
 
    T pop() {
        if (isEmpty()) {
            throw std::underflow_error("queue is empty");
        }
        T result = static_cast<Node *>(base.next)->value;
        delete base.next;
        --size;
        return result;
    }
 
    bool isEmpty() const {
        return base.next == &base;
    }
 
    friend std::ostream &operator<<(std::ostream &out, const Queue<T> &q) {
        for (NodeBase *i = q.base.next; i != &q.base; i = i->next) {
            std::cout << (static_cast<Node *>(i)->value);
            if (i->next != &q.base) {
                std::cout << ", ";
            }
        }
        return out;
    }
 
private:
 
    struct NodeBase {
        NodeBase *next;
        NodeBase *prev;
 
        NodeBase() noexcept: next(this), prev(this) {}
 
        explicit NodeBase(NodeBase *after) noexcept: next(after->next), prev(after) {
            next->prev = prev->next = this;
        }
 
        virtual ~NodeBase() noexcept {
            next->prev = prev;
            prev->next = next;
        }
    };
 
    struct Node : public NodeBase {
        T value;
 
        Node(NodeBase *after, const T &value) noexcept: NodeBase(after), value(value) {}
    };
 
    NodeBase base;
    std::size_t size;
};
 
int main() {
 
    Queue<int> a;
 
    for (int i = 0; i < 10; ++i) {
        a.add(i);
    }
    
    std::cout << "Size: " << a.getSize() << " [" << a << "]" << std::endl;
    while (!a.isEmpty()) {
        std::cout << "Pop: " << a.pop() << std::endl;
        std::cout << "Size: " << a.getSize() << " [" << a << "]" << std::endl;
    }
 
    try {
        a.pop(); // pop when queue is empty
    } catch (const std::underflow_error &e) {
        std::cout << "Error popping element: " << e.what() << std::endl;
    }
 
    return 0;
}
1
16.02.2022, 00:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.02.2022, 00:12
Помогаю со студенческими работами здесь

Создать класс типа - циклическая очередь
Создать класс типа - циклическая очередь. Функции-члены получают элемент и вставляют элемент.

Создать класс типа - циклическая очередь
Без понятия как это сделать! Помогите пожалуйста! Создать класс типа - циклическая очередь....

Создать динамический класс Route на основе двусвязного списка, где каждый элемент типа stop (стоп). Класс должен содержа
Здравствуйте,вот такие задачи в универе... Кто-то может понять что тут делать? Задача на с++...

Создание связного списка из данных типа LPCWSTR
Ситуация: переменная WIN32_FIND_DATA ffd, в ней есть параметр WCHAR cFileName (как определено в...

В двух разных файлах реализуйте очередь в виде массива и связного списка. Создайте методы добавления и удаления элемента
В двух разных файлах реализуйте очередь в виде массива и связного списка. Создайте методы...

Класс стек, наследованный от связного списка
Как я понял из текста, что для методов isEmpty и print класса List нужен какой-то аргумент....

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


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

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