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

Зачем нужен стек и очередь - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка с выводом в консоль http://www.cyberforum.ru/cpp-beginners/thread587682.html
Добрый день столкнулся с такой проблемой в с++ 2008; #include "stdafx.h" int _tmain(int argc, _TCHAR* argv) { int i, c, k; for (i = 1; i <= 10; i++ ) {
C++ Массивы, матрицы 1.Для массива Х вещественных чисел определить n и P=∏Xn (нижний индекс i=1, верхний--n) , где Xn+A>B 2.Заданы две матрицы А и В целых чисел. Преобразовать их в матриц логических значений А’ и В’ по принципу: a’=’истина’, если a>k, a’=’ложь’, если a< k, http://www.cyberforum.ru/cpp-beginners/thread587666.html
C++ Шаблоны. Хеш-функция
Добрые день. Есть задание сделать телефонную книгу. Поиск в базе сделать через хеш-функцию. name - фамилия абонента. num - номер телефона Делал вот так () : файл LIST.h
C++ Производные классы
Уважаемые программисты, помогите блондинке с задачкой:scratch: В функции main создать инициализированный объект производного класса, и указатель на тип второго производного класса. Распечатать сумму элементов всех классов и отдельно каждого класса, используя указатель на второй производный класс. Базовый класс представляет собой структуру, которая содержит две переменные m,n с доступом по...
C++ неправильно считываются данные из WAV файла http://www.cyberforum.ru/cpp-beginners/thread587645.html
Всем привет! У меня проблема с получением данных из WAV файла. Почему то функция, которая написана ниже, возвращает размер блока data в 2 раза больше, чем он есть на самом деле. и если воспроизвести массив с данными data, то он будет воспроизводится в 2 раза быстрее, чем нужно (эти факты получены в результате проверки на MATLAB). Используемый файл - моно (с 1 каналом). подскажите, пожалуйста,...
C++ Курсовая работа мне необходимо написать курсовую работу на тему "визуализация алгоритма А* с помощью openGL" Программу написал, но никак не могу понять, что нужно написать в цель и задачи в ведении. может кто поможет советом ? подробнее

Показать сообщение отдельно
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
27.05.2012, 06:07     Зачем нужен стек и очередь
Цитата Сообщение от Evg Посмотреть сообщение
"поиск в ширину" - в них используется стек
Как раз в поиске в ширину используется очередь.
Одно из практических применений для очереди(для стека применений очень много, лень их все описывать):
Допустим, у вас есть задача - получить с консоли некую последовательность чисел, и затем вывести эту последовательность с удвоенными элементами в консоль.
Классический подход - сначала сохранить все считываемые данные в массиве, и затем вывести этот массив.
Т.е.
примерно такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <vector>
 
int main()
{
    std::vector< int > arr;
    
    int x;
    while (std::cin >> x && x != 0) //0 - конец ввода
        arr.push_back(x);
 
    for (size_t i = 0; i < arr.size(); ++i)
        std::cout << arr[i] * 2 << std::endl;
}

Альтернативный подход - использовать очередь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <queue>
 
int main()
{
    std::queue< int > qu;
    
    int x;
    while (std::cin >> x && x != 0) //0 - конец ввода
        qu.push(x * 2);
    
    for (; !qu.empty(); qu.pop() )
        std::cout << qu.front() << std::endl;
}
В данном случае задача надумана и очень проста, но даже здесь мне решение с очередью кажется более красивым. В более сложных задачах, где нужно накапливать ответ, сложно найти достойную замену очереди.
 
Текущее время: 16:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru