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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
#1

Вывод очереди - C++

19.12.2013, 21:14. Просмотров 1895. Ответов 14
Метки нет (Все метки)

Здравствуйте, у меня такой вопрос, я создал очередь с помощью queue, можно ли вывести всю очередь, у меня получалось выводить только первый и последний элементы =\
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2013, 21:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод очереди (C++):

Вывод из очереди табличкой - C++
Есть очередь структур, нужно организовать вывод их в консоль не как строки, а каждую структуру (каждый элемент очереди) выводился в...

Вывод элементов очереди на экран - C++
Подскажите пожалуйста, как вывести очередь на экран. У меня почему-то какуя-то ошибку кидает. У меня есть версия, что нужно перегрузить...

Вывод содержимого очереди. Нужен совет - C++
Всем привет. Возникла загвоздка с обычной очередью. Хочу вывести все значения которые были занесены в очередь функцией. Это вставка...

Объявление ,инициализация ы вывод на экран двусторонней очереди - C++
Добрый вечер! Ребята подскажите ,я правильно все сделал ? Задание :объявить двустороннюю очередь с элементами целого типа и именем ...

Очереди. Каким образом считать две очереди из одного текстового файла? - C++
Здравстуйте. В задании первый пункт состоит в том, что нужно сформировать две очереди по n элементов с помощью считки данных из...

Найдите суммарную длину строк, принадлежащих очереди, кроме первой строки очереди - C++
Создать очередь строковых значений, для реализации используя односвязные списки.Реализовать операции добавления (enqueue) и удаления...

14
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 21:32 #2
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
#include <cstdio>
#include <iostream>
#include <cmath>
#include <string>
#include <queue>
using namespace std;
 
const int n = 10;
 
int main()
{
    queue<int> q;
    for(int i = 0; i < n; ++i)
    {
        int val = rand() % 10;
        q.push(val);
        cout << val << " ";
    }
    cout << endl;
 
    while(!q.empty())
    {
        int val = q.front();
        q.pop();
        cout << val << " ";
    }
    cout << endl;
 
    return 0;
}
0
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 21:49  [ТС] #3
Но если так сделать, то вроде после вывода все элементы удалятся =( а мне нужно что бы они оставались в программе дальше =(
0
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 21:50 #4
тогда лучше реализовать свою очередь на массиве
0
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 21:53  [ТС] #5
на массиве сложновато будет, там постоянно перезаписывать его нужно, использовать при этом первый элемент, ещё и дополнительное ограничение в размерности( значит через queue никак нельзя?
0
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 22:00 #6
нельзя, но а на массиве, что там вы собираетесь перезаписывать? если не хочется ограничиваться количеством элементов, то используйте vector
0
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 22:08  [ТС] #7
А его можно использовать как список? Есть функция что бы удалить первый элемент и очередь при этом сдвинулась?
0
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 22:12 #8
а просто поддерживай указатель на начало очереди:
C++
1
2
3
4
5
6
7
8
9
10
vector<int> q;
int l = 0;
 
// добавляем == push
for(int i = 0; i < 10; ++i)
    q.push_back(i);
// top
int top = q[l]; // тут надо ифик поставить, что l < q.size()
// удаляем == pop
++l;
1
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 22:18  [ТС] #9
Тогда вектор всё время будет увеличиваться =\ или есть команда удаляющая первый элемент? я нашел только для удаления последнего элемента
C++
1
q.pop_back()
0
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 22:21 #10
C++
1
2
3
4
5
6
7
8
9
10
vector<int> q;
// добавляем == push
for(int i = 0; i < 10; ++i)
    q.push_back(i);
// top
int top = q[0]; // тут надо ифик поставить, что l < q.size()
// удаляем == pop
reverse(q.begin(), q.end());
q.pop_back();
reverse(q.begin(), q.end());
но это того не стоит, переворачивание за линию ради того, чтобы сохранить память - извращение какое-то
0
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 22:30  [ТС] #11
Да, бида, это вообще на наркоманию похоже) Просто рациональное использование памяти бла бла бла и всё такое =\

Добавлено через 3 минуты
А можно создать список с помощью list?
0
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 22:32 #12
да, кстати, с list можно)
а можно еще вот так сделать: создать массив, например на миллион элементов (то есть верхняя граница на количество элементов в очереди), и поддерживать два указателя r, w (r = read, w = write) - индекс, из которого мы читаем и в который мы пишем, а дальше при чтении q[r] увеличиваем r, а при записи увеличиваем w. Если указатель упирается в конец массива, то перекидываем его в начало - в итоге это зацикленная очередь
0
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 22:35  [ТС] #13
Да, я думал так сделать, но как истинный ленивый инженер я начал искать более простое решение проблемы=)
Я так понял, что в библиотеке list есть все те же команды, что queue и vector.
0
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 22:41 #14
кстати, можно же вообще deque заюзать и вообще ничего не придумывать)
1
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 22:46  [ТС] #15
Оо, вообще отлично =) осталось только понять принцип работы) Благодарю)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2013, 22:46
Привет! Вот еще темы с ответами:

Извлечь из очереди начальные элементы и вывести их значения и новые адреса начала и конца очереди - C++
Дано число N (&gt; 0) и указатели P1 и P2 на начало и конец непустой очереди. Извлечь из очереди N начальных элементов и вывести их значения...

Создание очереди и удаление элемента очереди по усмотрению пользователя - C++
Вот код он создает очередь и должен удалить элемент очереди по усмотрению пользователя проблема заключается в том что при попытки удалить...

Разработать программу формирования очереди, содержащей целые числа, и упорядочивания по возрастанию элементов в этой очереди. - C++
Доброе всем время суток! Помогите пожалуйста! Разработать программу формирования очереди, содержащей целые числа, и упорядочивания по...

Очереди. Дан массив. Создать две очереди, первая должна содержать все нечетные, а вторая - все четные - C++
Очереди. Дан массив. Создать две очереди, первая должна содержать все нечетные, а вторая - все четные числа из исходного набора; порядок...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
19.12.2013, 22:46
Ответ Создать тему
Опции темы

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