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

Реализовать очередь на базе односвязного списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Описать структуру с именем Order http://www.cyberforum.ru/cpp-beginners/thread290508.html
Всем Привет! #include <iostream> #include <iomanip> #include <algorithm> struct Order { long payer; long receiver; double sum; };
C++ Определить количество повторений каждой из цифр в числе 1)Фишка может двигатся по полю длины N только вперёд.Длина хода фишки не более K. Найти число различных путей, по которым фишка может перейти поле от начала до конца. ПРИМЕР N=3 K=2 Возможны пути: 1, 1, 1 1, 2 2, 1 2)У покупателя есть n монет достоинством H(1),...,H(n). У продавца есть m монет достоинством B(1),...,B(2). Может ли купить покупатель вещь стоимости S так, чтобы у продовца... http://www.cyberforum.ru/cpp-beginners/thread290497.html
консоль C++
Есть файл с данными (большой текст, около 300 строк), когда считываю данные оттуда и вывожу их на экран(в консоли) часть данных теряется (начиная с заголовка и примерно одно окно консоли). как избежать потери данных?
C++ Что такое касательные и прямые классы?
Что такое касательные и прямые классы? Весь инет переискал ничего не нашел. Очень нужна заранее спасибо!
C++ Нахождение кратчайших слов в каждой строке текста http://www.cyberforum.ru/cpp-beginners/thread290484.html
Задание: В произвольном тексте (взятом из файла), содержащем не более 10 строк, в каждой строке не более 80 символов, найти и вывести на экран в виде списка слова наименьшей длины. Вывод организовать в порядке возрастания количества букв в слове, с указанием из какой строки взято слово и размера слова наибольшей длинны для данной строки. Для начала пробую разобраться с поиском слов наименьшей...
C++ Создание линейного списка Здравствуйте!!!!!! Помогите пожалуйста написать программку создание линейного спискаи распечатка линейного списка.Очен надо!!!! Заранее спасибо!!! подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
10.04.2014, 18:42     Реализовать очередь на базе односвязного списка
Нормального такого трупака отрыли. Лежал с тех пор, когда С и С++ на форуме в одном разделе были...

Цитата Сообщение от Левый_Програмер Посмотреть сообщение
Вот попроще реализация очереди через класс
Не, на С++ даже простенькую очередь можно интереснее сделать
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
#include <iostream>
#include <stdexcept>
#include <string>
 
template <typename T>
class Queue {
private:
    class Node {
    private:
        T value;
        Node * next;
    public:
        Node(const T & val) : value(val), next(0) {}
        T getValue() const {
            return value;
        }
        Node * getNext() const {
            return next;
        }
        void setNext(Node * node) {
            next = node;
        }
    };
    
    Node * pHead;
    Node * pTail;
    
    Queue(const Queue & another) {}
    Queue& operator = (const Queue & another) {}
 
public:
    Queue() : pHead(0), pTail(0) {}
    
    ~Queue() {
        while ( pHead ) {
            pTail = pHead->getNext();
            delete pHead;
            pHead = pTail;
        }
    }
    
    bool empty() const {
        return ! pHead;
    }
    
    void push(const T & value) {
        Node * pNode = new Node(value);
        
        if ( ! pHead )
            pHead = pNode;
        else
            pTail->setNext(pNode);
        pTail = pNode;
    }
    
    T shift() {
        if ( empty() )
            throw std::runtime_error("Empty queue!");
        
        T ret = pHead->getValue();
        Node * pNext = pHead->getNext();
        
        delete pHead;
        pHead = pNext;
        
        return ret;
    }
};
 
int main() {
    Queue<std::string> queue;
    queue.push("Any");
    queue.push("many");
    queue.push("money");
    queue.push("more...");
    
    while ( ! queue.empty() )
        std::cout << queue.shift() << " ";
    std::cout << std::endl;
    
    return 0;
}
 
Текущее время: 20:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru