Мне пришлось написать связанный список, затем превратить его в динамический стек, а затем превратить его в динамическую очередь.Что ж, похоже, все работает, кроме «удаления из очереди», когда программы заканчивают работу, возникает ошибка: «Произошло необработанное исключение win32 в LinkedList_Stack_BNS11.exe [4972]».
Я только предполагаю, что это исключение из очереди, потому что, когда я прохожу и / или запускаю программу, она работает до этой части, так что, возможно, я неправильно указала один из указателей или что-то в этом роде?
Вывод:
Запрос 5 элементов .... // Finsihes
Значения в очереди были (Снятие очереди):
0
1
2
// Правильный номер в очереди, но ...
// Программа выдает эту ошибку прямо здесь.Когда он должен закончиться и закрыться.
Если я включил слишком много кода, дайте мне знать, и я срублю его до просто «Снятие очереди» (которая находится в самой середине всех вещей ниже)
Заранее спасибо за помощь !!Я просто не вижу, что я сделал не так.Думая, что это может быть связано с тем, куда указывает «голова»?Idk.
Заголовочный файл:
class NumberList
{
private:
//
struct ListNode
{
int value; // Value in this node
struct ListNode *next; // Pointer to the next node
};
ListNode *head; // List head pointer
ListNode *rear;
public:
//Constructor
NumberList()
{ head = NULL; rear = NULL; }
//Destructor
~NumberList();
//Stack operations
bool isEmpty();
//Queue operations
void enqueue(int);
void dequeue(int &);
};
#endif
List_Stack_Queue.cpp:
bool NumberList::isEmpty()
{
bool status;
if(!head)
status = true;
else
status = false;
return status;
}
void NumberList::enqueue(int num)
{
ListNode *newNode; // Point to a new node
// Allocate a new node and store num there.
newNode = new ListNode;
newNode->value = num;
//If there are no nodes in the list
// make newNode the first node.
if(isEmpty())
{
head = newNode;
rear = head;
//newNode->next = NULL;
}
else
{
rear->next = newNode;
rear = rear->next;
//newNode->next = head;
//head = newNode;
}
}
void NumberList::dequeue(int &num)
{
ListNode *temp;
if(isEmpty())
cout << "The queue is empty.\n";
else
{
num = head->value;
temp = head;
head = head->next;
delete temp;
}
}
MAIN:
const int MAX_VALUES = 3;
// Create a DynIntQueue object.
NumberList iQueue;
// Enqueue a series of numbers.
cout << "Enqueuing " << MAX_VALUES << " items...\n";
for (int x = 0; x < MAX_VALUES; x++)
iQueue.enqueue(x);
cout << endl;
//Dequeue and retrieve all numbers in the queue
cout << "The values in the queue were (Dequeuing):\n";
while(!iQueue.isEmpty())
{
int value;
iQueue.dequeue(value);
cout << value << endl;
}
return 0;