Création d'une Liste Chaînée en C avec Fonctionnalités d'Ajout, de Suppression et de Recherche de Nœuds
Création d'une Liste Chaînée en C avec Fonctionnalités d'Ajout, de Suppression et de Recherche de Nœuds

Ecris le code d’une liste chaînée en C avec des fonctionnalités d’ajout, de suppression et de recherche de nœuds.

Comprendre les Listes Chaînées

Les listes chaînées sont des structures de données linéaires où chaque élément, appelé nœud, est composé d’une valeur et d’un pointeur vers le nœud suivant. En C, la manipulation des pointeurs est cruciale pour travailler avec des listes chaînées.

Initialisation du Projet

Commencez par créer un nouveau fichier source en C, par exemple linked_list.c. Assurez-vous d’inclure les en-têtes nécessaires :

c
#include <stdio.h>
#include <stdlib.h>

Structure du Nœud

Définissons la structure de base pour notre nœud :

c
struct Node {
int data;
struct Node* next;
};

Ici, data représente la valeur du nœud, et next est un pointeur vers le nœud suivant.

Fonction d’Ajout de Nœuds

Implémentons une fonction pour ajouter un nœud à la fin de la liste :

c
void appendNode(struct Node** head, int newData) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
struct Node* last = *head;

newNode->data = newData;
newNode->next = NULL;

if (*head == NULL) {
*head = newNode;
return;
}

while (last->next != NULL) {
last = last->next;
}

last->next = newNode;
}

Fonction de Suppression de Nœuds

Ajoutons une fonction pour supprimer un nœud avec une valeur donnée :

c
void deleteNode(struct Node** head, int key) {
struct Node* temp = *head;
struct Node* prev = NULL;

if (temp != NULL && temp->data == key) {
*head = temp->next;
free(temp);
return;
}

while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}

if (temp == NULL) {
return;
}

prev->next = temp->next;
free(temp);
}

Fonction de Recherche de Nœuds

Créons une fonction pour rechercher un nœud avec une valeur donnée :

c
struct Node* searchNode(struct Node* head, int key) {
while (head != NULL) {
if (head->data == key) {
return head;
}
head = head->next;
}

return NULL;
}

Fonction Principale

Enfin, dans la fonction principale (main), vous pouvez tester ces fonctionnalités :

c
int main() {
struct Node* head = NULL;

// Ajout de nœuds
appendNode(&head, 1);
appendNode(&head, 2);
appendNode(&head, 3);

// Affichage de la liste
printf("Liste initiale : ");
struct Node* current = head;
while (current != NULL) {
printf("%d -> ", current->data);
current = current->next;
}
printf("NULL\n");

// Suppression d'un nœud
int keyToDelete = 2;
deleteNode(&head, keyToDelete);
printf("Liste après suppression du nœud avec la valeur %d : ", keyToDelete);
current = head;
while (current != NULL) {
printf("%d -> ", current->data);
current = current->next;
}
printf("NULL\n");

// Recherche d'un nœud
int keyToSearch = 3;
struct Node* foundNode = searchNode(head, keyToSearch);
if (foundNode != NULL) {
printf("Le nœud avec la valeur %d a été trouvé.\n", keyToSearch);
} else {
printf("Le nœud avec la valeur %d n'a pas été trouvé.\n", keyToSearch);
}

return 0;
}

Compilez et exécutez votre programme pour voir ces fonctionnalités en action !

Conclusion

Félicitations ! Vous avez maintenant un aperçu complet de la création d’une liste chaînée en C avec des fonctionnalités d’ajout, de suppression et de recherche de nœuds. Cette compétence fondamentale en programmation vous sera certainement utile dans divers projets futurs. Bonne programmation !

 

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici