Форум программистов, компьютерный форум CyberForum.ru

Очередь - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Динамический массив указателей http://www.cyberforum.ru/cpp-beginners/thread163417.html
Чегото не пойму такое вообще возможно? Странно, что при объявлении можно не указывать размерность: int *a; Но как потом память выделять не известно. Добавлено через 2 минуты p.s. прошу не путать с указателем на массив.
C++ Как выразить в С корень n-степени. Как выразить в С корень n-степени. Подскажите. http://www.cyberforum.ru/cpp-beginners/thread163391.html
C++ Объявление структуры и класса
Ругается на строку obj_cls.prv=3; и на объявление класса. Что у меня не правильно? #include <iostream> using namespace std; struct str { int pub; private: int prv;
Вычисление факториала C++
Помогите пожалуйста вычислить факториал:
C++ Сделать функцию "Команда" http://www.cyberforum.ru/cpp-beginners/thread163290.html
Может кто помочь написать функцию "команда", т.е. например в консольном приложении вводишь команду, например hello, в ответ выводится hello world и тому подобное, задавать команду примерно так: command("hello") { printf ("Hello World\n"); }
C++ Приложения для телефона Писать приложения для телефона можно только на Java? Просто я слышал, что можно писать на си++ приложения для телефона, это правда? подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
04.09.2010, 23:01     Очередь
Цитата Сообщение от NikolaWhite Посмотреть сообщение
Я просто хочу чтоб в очередь вводилось и выводилось только 5 элементов каким бы ни был цикл.
Дело в том, что если для стека массив ещё можно использовать, то для очереди массив - самое неудачное решение. При извлечении первого элемента все остальные прийдётся на шаг влево смещать, а это очень накладно, каким бы образом ни было реализовано. Вот немного совсем класс переделал - теперь размер очереди ограничивается. Можно (и, наверное, правильнее) делать шаблонный класс, но суть от этого не изменится, а писанины немного больше...
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
#include <iostream>
#include <stdexcept>
 
class Queue {
    struct Node {
        Node * next;
        int data;
        Node(int d) : next(NULL), data(d) {}
    };
    Node * first;
    Node * last;
    int max_elements;
    int count;
    Queue(const Queue & q);
public:
    Queue(int m) : first(NULL), last(NULL), max_elements(m), count(0) {}
    ~Queue() {
        while ( first ){
            last = first->next;
            delete first;
            first = last;
        }
    }
    bool empty() const { return count == 0; }
    bool full() const { return count >= max_elements; }
    void enqueue(int val){
        if ( full() )
            throw std::runtime_error("Full queue!");
 
        Node * n = new Node(val);
        if ( empty() ){
            first = n;
            last = first;
        }
        else {
            last->next = n;
            last = n;
        }
        ++count;
    }
    int dequeue(){
        Node * n;
        int d;
 
        if ( empty() )
            throw std::runtime_error("Empty queue!");
 
        n = first;
        d = n->data;
        first = first->next;
        delete n;
        --count;
        return d;
    }
};
 
int main(){
    Queue q(5);
 
    int i = 0;
    while ( ! q.full() )
        q.enqueue(++i);
 
    while ( ! q.empty() )
        std::cout << q.dequeue() << std::endl;
 
    return 0;
}
 
Текущее время: 02:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru