Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 2
Регистрация: 17.03.2015
Сообщений: 33
1

Удаление элементов из односвязной очереди

15.09.2019, 00:23. Показов 1627. Ответов 0

Author24 — интернет-сервис помощи студентам
Здравствуйте! Очень нужна ваша помощь. Пожалуйста, уделите немного времени.
Есть задание и звучит оно так:
Составить программу обработки динамической структуры данных: удалить из односвязной очереди Q заданное количество элементов, стоящих после первого элемента с весом более 100.

Программу написал, динамическую очередь оформил, удаление и добавление из неё(в неё) работает на ура. А вот удаление указанного количества после элемента с весом более 100 не совсем и не всегда.
Три случая развития событий: 1) всё заработало, 2) программа зависла на выполнении и всё, 3) выходит ошибка о доступе к памяти.

отрезок из программы (Функция удаления описанная выше):
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
            bool DeleteFormWeight(int _weight, int Q) {
                Queue* queWait = new Queue(); // Создаём временную очередь
 
                if (empty()) return false; // Если наша очередь пуста - ошибка
                Element* elem = pop(); // создаём временный элемент и получаем элемент из очереди
                while (elem != NULL) // проверка
                {
                    if (elem->Weight <= _weight) {
                        queWait->push(elem); // если вес маленький, помещаем на ожидание
                        elem = pop();
                    }
                    else
                    {
                        queWait->push(pop()); // первый большой помещаем на ожидание
                        for (int i = 0; i < Q; i++) // остальные в указном кол-ве, удаляем
                            pop();
                        while (!empty()) // остаток, если есть, помещаем на ожидание
                            queWait->push(pop());
                        break; // уходим
                    }
                }
                Element* temp;
                while (!(queWait->empty())) {
                    temp = queWait->pop();
                    if (temp == NULL) break;
                    push(temp); // переносим обратно с ожидания
                    temp->next = queWait->pup();
                }
                // очистка памяти
                //delete[] queWait;
                //delete[] elem;
                return true;
            }
Если по данной части не всё понятно, ниже прилагаю весь проект в виде архива:
SP_6.rar

Большое спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2019, 00:23
Ответы с готовыми решениями:

Удаление элементов из очереди
Имеется часть кода: struct Spis2 { int info; Spis2 *next, *prev; }; void Del_5(Spis2...

Удаление положительных элементов очереди
Нужно написать программу для удаления положительных элементов очереди :) ВВод очереди...

Удаление элементов из кольцевой очереди
Нужна помощь с удалением элементов в циклической очереди. Принцип работы с кольцом знаю,...

Как происходит удаление элементов из очереди?
Объясните пожалуйста как происходит удаление элементов из очереди!! Допустим есть статическая...

0
15.09.2019, 00:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2019, 00:23
Помогаю со студенческими работами здесь

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

Удаление отрицательных элементов двусторонней очереди
Помогите и объясните пожалуйста. Есть функция, предназначение которой удалить элементы &lt;0...

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

Создание очереди чисел (умножение элементов, добавление и удаление, проверка значений)
Здравствуйте уважаемые форумчане... Тут такое дело, я пишу контрольную и задание меня смущает, так...

Удаление элементов из очереди
Пытаюсь удалить элементы из очереди,которые больше 5 ,подскажите ,что я делаю не так КОд:...

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


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

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