Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
1

Вывод очереди

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

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

Вывод из очереди табличкой
Есть очередь структур, нужно организовать вывод их в консоль не как строки, а...

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

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

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

Очереди. Каким образом считать две очереди из одного текстового файла?
Здравстуйте. В задании первый пункт состоит в том, что нужно сформировать...

14
max777alex
44 / 44 / 9
Регистрация: 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 / 9
Регистрация: 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 / 9
Регистрация: 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 / 9
Регистрация: 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 / 9
Регистрация: 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 / 9
Регистрация: 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 / 9
Регистрация: 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
19.12.2013, 22:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2013, 22:46

Найдите суммарную длину строк, принадлежащих очереди, кроме первой строки очереди
Создать очередь строковых значений, для реализации используя односвязные...

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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