#ifndef QUEUE_H
#define QUEUE_H

#include <stdlib.h>

union element_type
{
    int operand;
    char operator;
};

enum element_tag {
    TOKEN_OPERAND,
    TOKEN_OPERATOR
};

struct expression_element {
    enum element_tag tag;
    union element_type data;
};

struct queue {
    struct expression_element* data;
    struct queue *next;
};

struct queue *enqueue(struct queue *queue, struct expression_element* element);
struct expression_element* dequeue(struct queue **queue);
void queue_destroy(struct queue **queue);

#endif /* ! QUEUE_H */