--- /dev/null
+#include "ft_struct.h"
+
+t_ft_stat ft_queue_init(t_queue *queue, size_t el_size)
+{
+ return (ft_llist_init(&queue->list, el_size));
+}
+
+t_ft_stat ft_queue_enq(t_queue *queue, void *element)
+{
+ t_llist_node *new_node;
+
+ if (!queue || !element)
+ {
+ return (invalid_input);
+ }
+ new_node = ft_llist_insert(&queue->list, element);
+ if (!new_node)
+ {
+ return (alloc_fail);
+ }
+ return (success);
+}
+
+void *ft_queue_front(t_queue *queue)
+{
+ if (!queue->list.head)
+ return (NULL);
+ return (ft_llist_access(queue->list.head));
+}
+
+void *ft_queue_deq(t_queue *queue)
+{
+ void *res;
+
+ res = ft_queue_front(queue);
+ ft_llist_delete_head(&queue->list, NULL);
+ return (res);
+}
+
+void ft_queue_free(t_queue *queue, void (*free_el)(void *))
+{
+ ft_llist_free(&queue->list, free_el);
+ return ;
+}
void *ft_stack_pop(t_stack *stack);
void ft_stack_free(t_stack *stack, t_free_fun free_el);
+typedef struct s_queue
+{
+ t_llist list;
+} t_queue;
+
+t_ft_stat ft_queue_init(t_queue *queue, size_t el_size);
+t_ft_stat ft_queue_enq(t_queue *queue, void *element);
+void *ft_queue_front(t_queue *queue);
+void *ft_queue_deq(t_queue *queue);
+void ft_queue_free(t_queue *queue, t_free_fun free_el);
+
// t_vec reserves memory for 8 elements at first
// it may be beneficial to add a member defining the number of children
// and let a function reserve that number in the t_vec to save some space