Cześć! Próbuję zaimplementować dynamicznie kolejkę FIFO w C++.
Oto kod źródłowy:
using namespace std;
struct node {
int data;
node *next;
};
struct queue {
int size;
node *head;
node *tail;
node *tmp;
};
void initialize(queue &q) {
q.size = 0;
q.head = NULL;
q.tail = NULL;
}
bool empty(queue &q) {
if (q.size == 0) return true;
else return false;
}
void push(queue &q, int d) {
node* nd = new node;
nd -> data = d;
if (q.head == NULL) {
q.tail -> next = NULL;
q.tail -> data = d;
q.head = q.tail;
q.size++;
} else {
q.tail -> next = NULL;
q.tail -> data = d;
q.size++;
}
}
void pop(queue &q) {
if (q.head == NULL) {
cout << "Kolejka jest pusta!";
} else if (q.tail == q.head) {
delete q.head;
q.head = q.tail = NULL;
q.size--;
} else {
q.tmp = q.head -> next;
delete q.head;
q.tmp = q.head;
q.size--;
}
}
int first(queue &q) {
return q.head -> data;
}
int size(queue &q) {
return q.size;
}
int main() {
queue Q = *new queue;
initialize(Q);
push(Q, 1);
push(Q, 3);
push(Q, 6);
push(Q, 8);
push(Q, 2);
first(Q);
size(Q);
return 0;
}```
Kompilator w linii 32 wskazuje na błąd krytyczny "Thread 1: EXC_BAD_ACCESS (code=1, address=0x8)"
Pomoże ktoś początkującemu koledze? :)
Z góry dzięki!