init
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
#include "queue.h"
|
||||
|
||||
struct queue *enqueue(struct queue *queue, struct expression_element* element) {
|
||||
struct queue *new_elt = calloc(1,sizeof(struct queue));
|
||||
|
||||
new_elt->data = element;
|
||||
|
||||
if(!queue)
|
||||
return new_elt;
|
||||
|
||||
struct queue* current = queue;
|
||||
|
||||
while(current->next)
|
||||
current = current->next;
|
||||
|
||||
current->next = new_elt;
|
||||
|
||||
return queue;
|
||||
}
|
||||
|
||||
struct expression_element* dequeue(struct queue **queue) {
|
||||
if (!queue || !*queue)
|
||||
return NULL;
|
||||
|
||||
struct queue* removed = *queue;
|
||||
struct expression_element* res = removed->data;
|
||||
|
||||
*queue = removed->next;
|
||||
free(removed);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
void queue_destroy(struct queue **queue) {
|
||||
if(!queue)
|
||||
return;
|
||||
while (*queue) {
|
||||
struct expression_element* dequeued = dequeue(queue);
|
||||
free(dequeued);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user