С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 5
1

Выгрузить все элементы очереди

12.05.2016, 12:24. Показов 1653. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
У меня есть вопрос по поводу очередей. Как мне выгрузить всю очередь? У меня получилось отображать только главный элемент при помощи функции peek(). Код прилагаю:
Код С++
C++ (Qt)
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <locale.h>
using namespace std;
 
using namespace std;
 
class queue 
{
private:
    struct queue_ob
    {
        int value;
        queue_ob *addr;
    };
 
    queue_ob *head; 
    queue_ob *tail;
    int size; 
 
public:
    queue(int x)
                
    {
        head = new(queue_ob);
        tail = head; 
        head->value = x; 
        head->addr = 0; 
        size = 1; 
    }
 
    int stack_size()
    {
        return size;
    }
 
    void push(int value)
    {
        size++;
        queue_ob *temp = new(queue_ob); 
        temp->addr = 0; 
        temp->value = value; 
        tail->addr = temp;
        tail = temp;
    }
 
    void pop(int *ret)//Удаляет элемент(выталкивает) и возвращает его
                      // По адресу, хранящемся в ret, передается значение удаляемой головы
    {
        if (size == 0)
        {
            cout << "Очередь пуста - удалять нечего!" << endl;
            return;
        }
 
        queue_ob *temp = head; 
        *ret = head->value;
        head = head->addr; 
        delete temp; 
        size--;
    }
 
    void peek()//Выгружает значение
    {
        if (size == 0)
        {
            cout << "Очередь пуста!" << endl;
            return;
        }
        else {
            cout << "Вывод всех элементов на экран:" << endl;
 
            for (int i = 1; i <= size; i++)
            {
                cout << head->value << endl;
            }
        }
    }
 
};
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    queue a(1);
 
    int dialog = NULL;
 
    do
    {
        
        int number = NULL;
        int delNumber = NULL;
        system("cls");
 
        cout << "Выберите действие с очередью:" << endl;
        cout << "0: завершить работу" << endl;
        cout << "1: добавить элемент" << endl;
        cout << "2: удалить элемент" << endl;
        cout << "3: размер очереди" << endl;
        cout << "4: вывести все элеметы очереди" << endl;
 
        cin >> dialog;
 
        switch (dialog)
        { 
        case 0:
            cout << "Робота завершена." << endl;
            system("pause");
            return 0;
            break;
        case 1:
            cout << "Введите число: " << endl;      
            cin >> number;
            a.push(number);
            break;
        case 2:     
            a.pop(&delNumber);
            cout << "Удалено " << delNumber << endl;
            break;
        case 3:
            cout << "Размер очереди: " << a.stack_size() << endl;
            break;
        case 4:
            a.peek();
            break;
        default:
            break;
        }
 
        system("pause");
    } while (dialog);
 
    system("pause");
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2016, 12:24
Ответы с готовыми решениями:

Шаблонный класс очереди. Выводит сначала все индексы, потом все элементы
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; const int SIZE=100; ...

Очереди. Дан массив. Создать две очереди, первая должна содержать все нечетные, а вторая - все четные
Очереди. Дан массив. Создать две очереди, первая должна содержать все нечетные, а вторая - все...

Показать все элементы очереди
В реализации очереди не работает печать всех элементов (функция Print). И еще если вводишь не...

Как удалить все элементы из очереди (queue)
Есть очередь queue и в ней элементы, как удалить их все чтобы очередь осталась пустой?

2
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
12.05.2016, 12:38 2
Лучший ответ Сообщение было отмечено LifeAngel как решение

Решение

C++
1
2
3
4
5
6
cout << "Вывод всех элементов на экран:" << endl;
 
for(queue_ob *temp = head; temp; temp = temp->addr)
{
    cout << temp->value << endl;
}
1
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 5
12.05.2016, 13:42  [ТС] 3
Еще такой вопрос: когда я добавляю элемент в очередь - я уже не могу вывести всю очередь. А при попытке удали выскакивает ошибка прав доступа не чтение
http://picua.org/img/2016-05/1... fmyj8z.png
С чем это связано?

Добавлено через 19 минут
Решение найдено, тему можно закрывать
0
12.05.2016, 13:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2016, 13:42
Помогаю со студенческими работами здесь

Ревёрснуть очередь и отчистить все элементы очереди
Добрый день! В задании, помимо всех основных действий с очередью, нужно её ревёрснуть (дно сделать...

Удалить из очереди все элементы равные первому
Добрый вечер, я только изучаю очереди, и тут задание такое &quot;Написать процедуру удаления всех...

Удалить все парные элементы из очереди целых чисел и подсчитать их количество
Помогите написать програму есть очередь заполненая целыми числами нужно удалить все парные...

Добавить в конец непустой очереди все ее элементы, располагая их в обратном порядке
Добавить в конец непустой очереди все ее элементы, располагая их в обратном порядке.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru