Circular buffer - console crashing
Hello guys my console crashes when I try to run this code
Code:
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#define MAX_ITEMS 10
struct CircularQueue
{
int first;
int last;
int validItems;
int data[MAX_ITEMS];
};
void initiliazeQueue(CircularQueue* queue)
{
queue->validItems = 0;
queue->first = 0;
queue->last = 0;
for (int i = 0; i < MAX_ITEMS; i++)
{
queue->data[i] = 0;
}
}
int isEmpty(CircularQueue* queue)
{
if (queue->validItems == 0)
return 1;
else
return 0;
}
int enqueue(CircularQueue* queue, int itemValue)
{
if (queue->validItems >= MAX_ITEMS)
{
std::cout << "The queue is full\n";
std::cout << "\You cannot add items\n";
return -1;
}
else
{
queue->validItems++;
queue->data[queue->last] = itemValue;
queue->last = (queue->last + 1) % MAX_ITEMS;
return 0;
}
}
int dequeue(CircularQueue* queue, int* itemValue)
{
if (isEmpty(queue))
{
printf("is empty\n");
return -1;
}
else
{
*itemValue = queue->data[queue->first];
queue->first = (queue->first + 1) % MAX_ITEMS;
queue->validItems--;
return 0;
}
}
void printQueue(CircularQueue* queue)
{
int aux, aux1;
aux = queue->first;
aux1 = queue->validItems;
while (aux1>0)
{
printf("Element #%d = %d\n", aux, queue->data[aux]);
aux = (aux + 1) % MAX_ITEMS;
aux1--;
}
return;
}
using namespace std;
int main()
{
CircularQueue* circularQueue = new CircularQueue;
initiliazeQueue(circularQueue);
int* buffer = NULL;
if (isEmpty(circularQueue))
std::cout << "Queue is empty" << endl;
enqueue(circularQueue, 5);
enqueue(circularQueue, 12);
printQueue(circularQueue);
if (isEmpty(circularQueue) == -1)
std::cout << "Queue is empty" << endl;
dequeue(circularQueue, buffer);
std::cout << "After dequeue" << endl;
printQueue(circularQueue);
return 0;
}
This line is doing problems, so I tried to change it
Code:
dequeue(circularQueue, buffer);
to something like this
Code:
dequeue(circularQueue, &buffer);
But the file didn't copile then.