bruh
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
#include "includes.h"
|
||||
|
||||
tdQueue* queue_create() {
|
||||
tdQueue* queue = (tdQueue*)malloc(sizeof(tdQueue));
|
||||
queue->data = NULL;
|
||||
queue->size = 0;
|
||||
queue->capacity = 0;
|
||||
return queue;
|
||||
}
|
||||
|
||||
void queue_decontruct(tdQueue* queue)
|
||||
{
|
||||
int i = 0;
|
||||
while ((i < queue->size) && (queue->data[i] != NULL)) {
|
||||
deconstruct_matrix2d(queue->data[i]);
|
||||
i++;
|
||||
}
|
||||
free(queue);
|
||||
}
|
||||
|
||||
bool queue_is_empty(tdQueue* queue)
|
||||
{
|
||||
return queue->size == 0;
|
||||
}
|
||||
|
||||
int queue_size(tdQueue* queue)
|
||||
{
|
||||
return queue->size;
|
||||
}
|
||||
|
||||
void queue_enqueue(tdQueue* queue, matrix2d* data)
|
||||
{
|
||||
if (queue->capacity == queue->size) {
|
||||
if (queue->capacity) {
|
||||
queue->capacity = ceil(queue->capacity*sqrt(2));
|
||||
queue->data = (matrix2d**)realloc(queue->data, sizeof(matrix2d*)*(queue->capacity));
|
||||
} else {
|
||||
queue->capacity = ceil(sqrt(2));
|
||||
queue->data = (matrix2d**)malloc(sizeof(matrix2d*)*(queue->capacity));
|
||||
}
|
||||
}
|
||||
queue->data[queue->size++] = data;
|
||||
}
|
||||
|
||||
matrix2d* queue_dequeue(tdQueue* queue)
|
||||
{
|
||||
if (queue->data == NULL) return NULL;
|
||||
matrix2d* data = queue->data[0];
|
||||
for (int i = 1; i < queue->size; i++) {
|
||||
queue->data[i-1] = queue->data[i];
|
||||
}
|
||||
queue->size -= 1;
|
||||
return data;
|
||||
}
|
||||
|
||||
matrix2d* queue_peek(tdQueue* queue)
|
||||
{
|
||||
if (queue->data == NULL) return NULL;
|
||||
matrix2d* data = queue->data[0];
|
||||
return data;
|
||||
}
|
||||
|
||||
void queue_clear(tdQueue* queue)
|
||||
{
|
||||
int i = 0;
|
||||
while (i < queue->capacity && queue->data[i] != NULL)
|
||||
deconstruct_matrix2d((matrix2d*) (queue->data)[i++]);
|
||||
queue->size = 0;
|
||||
}
|
||||
Reference in New Issue
Block a user