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

Очередь С++ Проблема с удалением элементов класса очереди - C++

Восстановить пароль Регистрация
 
DS26
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 3
17.05.2012, 17:35     Очередь С++ Проблема с удалением элементов класса очереди #1
Разбираюсь с очередью. Не могу понять, где совершил ошибку: при компиляции компилятор ругается на необработанное исключение при удалении элемента из очереди, и соответственно, на деструктор. Вот сам код очереди:
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
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
// Файл реализации QueueP.cpp абстрактной очереди.
// Реализация в виде связанного списка.
#include "stdafx.h"
 
Queue::Queue() : backPtr(NULL), frontPtr(NULL)
{
} // Конструктор no умолчанию
Queue::Queue(const Queue& Q)
{
// Реализуйте эту функции самостоятельно (упражнение 4).
} // Конец KoiiCTpyKTopa копирования
Queue::~Queue()
{
while (!isEmpty())
dequeue();
// Диагностическое утверждение: указатели frontPtr и backPtr
// равны константе NULL
} // Конец деструктора
bool Queue::isEmpty() const
{
return bool(backPtr == NULL);
} // Конец функции isEmpty
void Queue::enqueue(QueueItemТуре newItem)
{
// Создать новый элемент
QueueNode *newPtr = new QueueNode;
if (newPtr == NULL) // Проверка выделения памяти
throw QueueException(
"QueueException: enqueue — недостаточно памяти");
else
{
// Выделение памяти прошло успешно;
// записать данные в новый узел
newPtr->item = newItem;
// insert the new node
if (isEmpty ())
// Вставка элемента в пустую очередь
frontPtr = newPtr;
else
// Вставка элемента в непустую очередь
newPtr->next = backPtr;
backPtr = newPtr; // Новый элемент
// стоит в конце очереди
} // Конец оператора if
} // Конец функции enqueue
void Queue::dequeue()
{
if (isEmpty())
 throw QueueException(
 "QueueException: dequeue — очередь пуста");
else
 // Очередь не пуста. Удалить первый элемент.
{
QueueNode *tempPtr;
tempPtr = frontPtr;
if (frontPtr == backPtr) // Отдельная задача?
{
// Да, в очереди только один узел
frontPtr = 0;
backPtr = 0;
}
else
frontPtr = frontPtr->next;
tempPtr->next = 0; // Меры предосторожности
delete tempPtr;
} // Конец оператора if
} // Конец функции dequeue
void Queue::dequeue(QueueItemТуре& queueFront)
{
if (isEmpty())
throw QueueException(
"QueueException: dequeue — очередь пуста");
else
{
// Очередь не пуста. Удалить первый элемент
queueFront = frontPtr->item;
dequeue(); // Удалить первый элемент
} // Конец оператора if
} // Конец функции dequeue
void Queue::getFront(QueueItemТуре& queueFront) const
{
if (isEmpty())
throw QueueException(
"QueueException: getFront — очередь пуста");
else
// Очередь не пуста. Извлечь первый элемент.
queueFront = frontPtr->item;
} // Конец функции getFront
// Конец файла реализации.
В отдельный файл прикрутчена обработку исключений
C++
1
2
3
4
5
6
7
8
9
10
11
//QueueException.
#include "stdafx.h"
 
using namespace std;
class QueueException : public exception
{
public:
QueueException(const string & message="")
 : exception(message.c_str())
{}
}; // Конец класса QueueException
Подскажите, где накосячил!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2012, 17:35     Очередь С++ Проблема с удалением элементов класса очереди
Посмотрите здесь:

C++ Циклический буфер. Проблема с удалением элемента.
C++ Реализация в виде класса очереди с приоритетом.
C++ Массив сортировка по возростанию с удалением ненужных элементов.
C++ обработка строки с удалением и добавлением элементов
C++ Очередь: Создать две новые очереди в которых будут находиться отдельно положительные и отрицательные числа
C++ Создание класса очереди
C++ Очередь с приоритетом. Элементы с наивысшим приоритетом ставятся в начало очереди, с наименьшим – в конец
C++ Создать на базе класса с реализацией очереди клас потомок — кольцевая очередь

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DS26
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 3
28.05.2012, 21:38  [ТС]     Очередь С++ Проблема с удалением элементов класса очереди #2
Вопрос все еще актуален. )) Помогите, пожалуйста))
DS26
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 3
01.06.2012, 07:22  [ТС]     Очередь С++ Проблема с удалением элементов класса очереди #3
Ап...
Yandex
Объявления
01.06.2012, 07:22     Очередь С++ Проблема с удалением элементов класса очереди
Ответ Создать тему
Опции темы

Текущее время: 12:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru