Une liste chaînée est dite circulaire lorsque le dernier élément possède une référence vers le premier élément. Considérez une liste circulaire triée par ordre strictement croissant depuis son premier élément.
Une telle liste peut être représentée par les structures suivantes:
typedef struct node{
struct node* next;
int value;
} node_t;
typedef struct queue{
struct node* head;
int size;
} queue_t;
Dès lors, la référence head
pointe vers l'élément de plus petite valeur dans la liste.
Ecrivez le corps de la fonction enqueue
qui ajoute un élément à l'endroit approprié dans cette liste circulaire triée.
/*
* Ajoute la valeur @val à l'endroit adéquat dans la liste @q.
*
* @val : la valeur à ajouter
* @q : la liste
*
* @pre q != NULL, @q est une liste triée valide, val n'est pas déjà présent dans la liste
* @return -1 en cas d'erreur, 0 sinon
*/
int enqueue(queue_t* q, int val){