Information

Author(s) Maxime Mawait, Nicolas Rybowski, Anthony Gégo
Deadline No deadline
Submission limit No limitation

Sign in

Ajout dans une liste circulaire triée

Le syllabus est accessible depuis l'URL https://sites.uclouvain.be/SyllabusC/notes/Theorie/index.html

Les pages de manuel sont accessibles depuis les URLs suivants :

Attention: veuillez utiliser la version HTML du syllabus


Question 1: Enqueue

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.

circ_list/circularly-linked-list.svg

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){
Question 2: Fonctions supplémentaires

Insérez ici les fonctions supplémentaires dont vous avez besoin.

Question 3: Fonction de test optionnelle

Insérez votre code de test optionnel ci-dessous. Vous pouvez utiliser printf dans cette fonction pour débugger votre programme.

void montest(void) {