#include #include /* Définition de la structure pour un maillon de la liste chaînée*/ struct Node { int value; struct Node* next; }; /* Alias pour faciliter l'utilisation de la structure*/ typedef struct Node Node; /* Fonction pour ajouter un entier dans la liste de manière ordonnée*/ Node* insertOrdered(Node* head, int value) { Node* newNode = (Node*)malloc(sizeof(Node)); Node* current; newNode->value = value; newNode->next = NULL; if (head == NULL || value < head->value) { newNode->next = head; return newNode; } current = head; while (current->next != NULL && current->next->value < value) { current = current->next; } newNode->next = current->next; current->next = newNode; return head; } /* Fonction pour afficher les valeurs dans la liste*/ void displayList(Node* head) { Node* current = head; while (current != NULL) { printf("%d ", current->value); current = current->next; } printf("\n"); } int main() { Node* head = NULL; /* Tête de la liste*/ while (1) { int userInput; printf("Entrez un entier (ou appuyez sur Entrée pour quitter) : "); if (scanf("%d", &userInput) != 1) { /* L'utilisateur a appuyé sur Entrée, quitter la boucle*/ break; } /* Insérer l'entier dans la liste de manière ordonnée*/ head = insertOrdered(head, userInput); /* Afficher la liste actuelle*/ displayList(head); } /* Libérer la mémoire allouée pour la liste à la fin du programme*/ while (head != NULL) { Node* temp = head; head = head->next; free(temp); } return 0; }