moitié tp 3
This commit is contained in:
75
prepa_CM3/ex1_B.c
Normal file
75
prepa_CM3/ex1_B.c
Normal file
@@ -0,0 +1,75 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/* 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;
|
||||
}
|
||||
Reference in New Issue
Block a user